•  

コラム

  1. TOP
  2. コラム
  3. コラム
  4. 第3回 Dockerとは?実践編、実際のコマンドの動かし方

第3回 Dockerとは?実践編、実際のコマンドの動かし方

  • LINEで送る
  • このエントリーをはてなブックマークに追加
第3回 Dockerとは?実践編、実際のコマンドの動かし方

第3回 Docker解説 コラム

この連載コラムでは、仮想化技術のDockerとは?について、数回に分けてわかりやすくお伝えします。

今回は、実践編として、実際のコマンドの動かし方を紹介します。

入門編は、次のような想定・目的で記述しています。

想定する読者
  • Dockerの特徴を知りたい人
想定する読者の
知識レベル
  • 仮想化技術について用語レベルの知識がある人
  • プログラム開発環境、実行環境について知識がある人
本連載を読んだ後に得られる期待値
  • 以下の問いに答えられるようになる
    • 他の仮想化技術ではだめなんですか?(Dockerを使う理由は?)
    • Dockerの特徴について簡単に教えて
    • Dockerについて自力で調査できるようになる

 



1. インストール

Docker Engine の種類とインストール手順

まず、公式サイトのインストール関連ページを挙げておきます。

Windows/MacOS については OS バージョンを記載していますが、頻繁に更新されていることもあり、またその他の条件も記載されているので、利用環境に合わせて詳細情報を確認してください。

Docker Serverは、基本的にはLinuxにインストールして使用します。

WindowsでもWSL2であれば動作します。WSL1(古い方のWSL)では、たとえばCentOSのコマンドなどを使ってインストールはできるのですが、その後dockerコマンドを動かそうとするとエラーが発生します。

Docker DesktopはMacやWindowsにインストールして使用します。ハードウェアやOSのバージョンにご注意ください。



Docker Desktopのインストール例

ここでは Windows 10 64ビットでのインストールについて簡単に紹介します。

また、Hyper-Vが必要要件となっていますが、Hyper-Vを動かすにあたって、以下の要件を満たしている必要があります。

  • SLAT(Second Level Address Translation)対応の64ビットプロセッサ
  • 4GB以上のメモリ
  • BIOSレベルハードウェア仮想化支援(Intel-VT、AMD-V)


Hyper-Vは、標準状態では有効になっていないため、次の手順で有効化してください。
(参考:
https://docs.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v

  1. [コントロール パネル > プログラム > プログラムと機能] で [Windows の機能の有効化または無効化] を押下

  2. [Hyper-V] をチェック

  3. Windows 再起


Hyper-Vのインストール後に、Docker Desktopのインストールを行います。インストール手順は以下のとおりです。

  1. インストーラーを取得

  2. ダウンロードしたインストーラーをダブルクリックして実行

  3. ダイアログが表示されたら、[Enable Hyper-V Windows Features] がチェックされていることを確認して [OK] を押下

  4. インストール成功のダイアログが表示されたら [Close] を押下してインストール完了

  5. PowerShellから以下のコマンドを実行して動作確認
    > docker run hello-world


Windows 10以外の環境でも、先に挙げた公式サイトのインストールページの手順に沿って行えば、簡単にインストールできます。



ご不明点・ご相談ごとがあれば
お気軽にご連絡ください

ソフトウエア開発オンライン学習Eureka Box

Eureka Boxは厚生労働省が実施している助成金、人材開発支援助成金の適用対象となります。

詳細はこちら
人材開発支援助成金


2. dockerコマンド

コマンド一覧

まず、よく使用するdockerコマンドを一覧に挙げておきます。
(参照:公式リファレンスマニュアル https://docs.docker.com/engine/reference/commandline/cli/

<コンテナ操作>

  • docker -t IMAGE_NAME build .
    カレントディレクトリのDockerfileを使用してDockerイメージ をビルド

  • docker images
    ローカル(PC内)のDockerイメージ の一覧を表示

  • docker ps
    現在実行中のコンテナ の一覧を表示
    -a オプションを付与すると停止中のコンテナも表示

  • docker run IMAGE_NAME [COMMAND]
    IMAGE_NAMEを使用してDockerコンテナを起動
    COMMAND を指定した場合、起動後に実行(COMMAND が完了したらコンテナも停止)

  • docker stop CONTAINER
    CONTAINERを停止

  • docker rm CONTAINER
    CONTAINERを消去

  • docker commit CONTAINER [REPOSITORY[:TAG]]
    現在のCONTAINERの状態をDockerイメージとして登録

  • docker inspect NAME
    Dockerオブジェクトの低レベル情報を表示する


<ネットワーク、バインドマウント関連>

  • docker network ls
    Dockerネットワークの一覧表示

  • docker network create -d bridge NAME
    bridgeネットワークの生成

  • docker network inspect NAME
    NAMEの詳細情報を表示
    接続しているコンテナ一覧が確認可能

  • docker run -itd --network=mynet busybox
    mynetに接続してコンテナを起動

  • docker network rm NAME
    NAMEの削除
    接続しているコンテナがある場合は削除不可

  • docker network prune
    未使用ネットワークを一括削除

  • docker run -v /host/dir:/foo -w /foo -i -t IMAGE_NAME COMMAND
    Dockerホストの/host/dirをコンテナの/fooにバインドマウントしてCOMMAND を実行(ホストのファイルをコンテナで直接使用可能)


状況別の使い方

以下は、シナリオ別にこれらのコマンドの使い方を紹介します。

<Dockerイメージ関連>

  • イメージ のビルド
    • Dockerfileを作成 (Dockerfile については、連載第2回の「Dockerfileサンプル」を参照)
    • Dockerfileを作成したディレクトリで
      $ docker build -t IMAGE_NAME .
      IMAGE_NAMEはイメージ を識別するための任意の文字列
      最後の “.” はDockerfileのディレクトリを指定している

  • ローカルに格納されているイメージ の確認
    $ docker images
    ビルドしたイメージだけでなく、docker pullしたイメージもリスト表示される

  • イメージの削除
    $ docker rmi IMAGE_NAME
    IMAGE_NAMEをもとに作成したコンテナがある場合は削除できない(コンテナを消去したのちにイメージを削除する)
    名前の付いていないイメージの場合、IMAGE_NAMEの代わりにIDを指定することも可能

<Dockerコンテナ関連>

  • コンテナの実行
    • $ docker run -it IMAGE_NAME [command]
      commandを指定すると、DockerfileのCMDを上書きしてENTRYPOINTに対する引数となる(イメージに設定されている標準のコマンドを実行する場合には、commandの指定は不要)
      -it:サービス用のコンテナの場合は不要
    • Dockerホスト内のファイルを実行する場合は、後述のバインドマウントを使用する
    • コマンド例:イメージ内のPythonスクリプト「script_in_image.py」を実行
      $ docker run -it python script_in_image.py

  • コンテナ一覧
    $ docker ps -a
    -a:停止中のコンテナも含めて一覧表示する

  • コンテナをイメージ化
    • $ docker commit CONTAINER_ID [IMAGE_NAME]
      Dockerfileを作成せず、現在のコンテナの状態をイメージにする場合に使用
      手動で実行した結果をイメージとして保存する場合に有効
    • 作成の履歴を残す必要がある場合は、Dockerfileを使用して docker build するべき

  • コンテナの削除
    $ docker rm CONTAINER_ID
    docker runに「--rm」オプションを付与していると、コンテナ終了時に自動削除されて、このコマンドは不要となる

  • コンテナの停止
    $ docker stop CONTAINER_ID

  • 停止しているコンテナの起動
    $ docker start CONTAINER_ID
    docker createでコンテナを作成した場合、停止コンテナが生成されるため、docker startで起動する必要がある

 


仮想化技術Docker開発に求められる技術を知るには

Dockerの技術を実際に学んでみたいという方に、まずは無料でお試しいただけるオンライン学習プラットフォームを準備しています。

業務が多忙なエンジニアでも、スキマ時間で効率的に実践的な学習が出来るEureka Boxは、エンジニアの現場の声から生まれたツールです。

エンジニアの独学・スキルアップに! 他では学べない技術が充実
上流工程ソフトウェア開発技術を学ぶ!
Eureka Box(ユーリカボックス)
エンジニア独学、オンライン学習、ソフトウェア開発独学、エンジニア教材、無料コンテンツ、Eureka Box ユーリカボックス



Dockerを正しく理解した上で、最大限の効果を得られるようスキルアップしたい方にもEureka Boxでの学習はお勧めで、無料会員登録だけでも以下の特典が受けられます。

Eureka Box会員登録特典(無料)
  1. 各連載コラムの全容、未公開コラムも一気にまとめて読める(一部動画解説付!)
  2. USDM(要求記述)、MBD(モデルベース開発)、システムズエンジニアリング、AWS Greengrass(新世代エッジエンジニアのための技術講座)など、ソフトウェア開発に関わる知識がギュッと凝縮、困った時のお助けアイテムとしても長期で活用出来る
  3. ソフトウェア開発に関わる無料お試しコンテンツも充実
今回は実践編として、Dockerの基本操作の「Docker Engine の種類とインストール手順」と、「Dockerコマンド」についてお知らせしました。次回はいよいよラスト、「Dockerネットワーク」と「Dockerのファイルシステム」についてお伝えいたします。

株式会社エクスモーション シニアエキスパート 野沢 利明

執筆者プロフィール

株式会社エクスモーション シニアエキスパート

野沢 利明

 

専門分野:

DevOps(CI/CD)、クラウドコンピューティング、Quick Hack(Quick Fix), Agile、ロボティクス、ネットワーク、防衛システム



トップ企業をサポートしてきた技術と知見を1冊に「ソリューションガイドブック」

私達エクスモーションが行った、日本を代表する企業へのコンサルティングやトレーニングとは?
オンライン学習 Eureka Box誕生のベースとなった技術や知見が満載!
実際に支援を行ったお客様からのメッセージも掲載し、読み応えある1冊に仕上げています。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

技術別コラム一覧

要求の定義と仕様化(USDM)

ROS

システムズエンジニアリング

クラウド技術
(AWS Greengrass)

Docker

モデルベース開発(MBD)

派生開発(XDDP)

SPL

用語集