第3回 Dockerとは?実践編、実際のコマンドの動かし方
第3回 Docker解説 コラム
この連載コラムでは、仮想化技術のDockerとは?について、数回に分けてわかりやすくお伝えします。
今回は、実践編として、実際のコマンドの動かし方を紹介します。
入門編は、次のような想定・目的で記述しています。
想定する読者 |
|
想定する読者の 知識レベル |
|
本連載を読んだ後に得られる期待値 |
|
目次
1. インストール
Docker Engine の種類とインストール手順
まず、公式サイトのインストール関連ページを挙げておきます。
Windows/MacOS については OS バージョンを記載していますが、頻繁に更新されていることもあり、またその他の条件も記載されているので、利用環境に合わせて詳細情報を確認してください。
- Docker Server(WSL2 で動作可)
- Docker Desktop for Mac
- Macモデル2010以降、macOSバージョン10.14以降:https://docs.docker.com/docker-for-mac/install/
- Docker Desktop for Windows
- Windows 10 64-bit: Home or Pro 2004 (build 19041) 以上、または Enterprise or Education 1909 (build 18363) 以上:https://docs.docker.com/docker-for-windows/install/
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)
- [コントロール パネル > プログラム > プログラムと機能] で [Windows の機能の有効化または無効化] を押下
- [Hyper-V] をチェック
- Windows 再起
Hyper-Vのインストール後に、Docker Desktopのインストールを行います。インストール手順は以下のとおりです。
- インストーラーを取得
- ダウンロードしたインストーラーをダブルクリックして実行
- ダイアログが表示されたら、[Enable Hyper-V Windows Features] がチェックされていることを確認して [OK] を押下
- インストール成功のダイアログが表示されたら [Close] を押下してインストール完了
- PowerShellから以下のコマンドを実行して動作確認
> docker run hello-world
Windows 10以外の環境でも、先に挙げた公式サイトのインストールページの手順に沿って行えば、簡単にインストールできます。
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(ユーリカボックス)
Dockerを正しく理解した上で、最大限の効果を得られるようスキルアップしたい方にもEureka Boxでの学習はお勧めで、無料会員登録だけでも以下の特典が受けられます。
- 各連載コラムの全容、未公開コラムも一気にまとめて読める(一部動画解説付!)
- USDM(要求記述)、MBD(モデルベース開発)、システムズエンジニアリング、AWS Greengrass(新世代エッジエンジニアのための技術講座)など、ソフトウェア開発に関わる知識がギュッと凝縮、困った時のお助けアイテムとしても長期で活用出来る
- ソフトウェア開発に関わる無料お試しコンテンツも充実
執筆者プロフィール
株式会社エクスモーション シニアエキスパート
専門分野:
DevOps(CI/CD)、クラウドコンピューティング、Quick Hack(Quick Fix), Agile、ロボティクス、ネットワーク、防衛システム
トップ企業をサポートしてきた技術と知見を1冊に「ソリューションガイドブック」
私達エクスモーションが行った、日本を代表する企業へのコンサルティングやトレーニングとは?
オンライン学習 Eureka Box誕生のベースとなった技術や知見が満載!
実際に支援を行ったお客様からのメッセージも掲載し、読み応えある1冊に仕上げています。