Docker - コマンド
概要
Dockerコマンドは、Dockerエコシステムを操作するための主要なツールである。
Dockerコマンドを使用して、Dockerイメージの構築、コンテナの管理、ネットワークの設定等、Dockerの主要な操作を行うことができる。
Dockerコマンド
Dockerイメージの検索
Docker Hubからイメージを検索およびダウンロードすることもできる。
sudo docker search <イメージ名>
Dockerイメージのダウンロード
sudo docker pull <イメージ名>
Dockerイメージの一覧表示
sudo docker image ls または sudo docker image ls -a または sudo docker image ls --all
Dockerイメージの削除
<イメージ名>は上述の"イメージの一覧表示"で確認できる。
-f
オプションを付加することにより、使用中のイメージおよびコンテナであっても削除することができる。
sudo docker rmi -f <イメージ名>
Dockerイメージの実行
<イメージ名>はイメージの名前であり、<COMMAND>はDockerコンテナ上で実行するコマンドである。
sudo docker run <イメージ名> <COMMAND>
実行コマンドが、/bin/bashのような対話型(インタラクティブ)なコマンドの場合は、-it
オプションを指定する。
-i
オプションはコンテナの標準入力を有効化、-t
オプションはttyを有効化するためのオプションである。
sudo docker run –it <イメージ名> /bin/bash
detachedモード(バックグラウンドモード)で実行する場合は、–d
オプションを指定する。
sudo docker run -d dockersamples/static-site
実行中のDockerコンテナの一覧表示
sudo docker ps または sudo docker container ls
全てのDockerコンテナの一覧表示
sudo docker ps -a または sudo docker ps --all または sudo docker container ls –a または sudo docker container ls –-all
Dockerコンテナの削除
<CONTAINER ID>を指定する。
<CONTAINER ID>は上述の"コンテナの一覧表示"で確認できる。
sudo docker rm <CONTAINER ID> または sudo docker countainer rm <CONTAINER ID>
Dockerコンテナの停止
sudo docker stop <CONTAINER ID> sudo docker container stop <CONTAINER ID>
コンテナの停止と削除を同時に実施する。
sudo docker rm –f <CONTAINER ID> sudo docker container rm -f <CONTAINER ID>
Dockerコンテナに任意の名前を付ける
これは、<CONTAINER ID>の代わりに指定できる。
sudo docker run --name <任意のコンテナ名> <イメージ名>
ポートマッピング
run
コマンドにおいて、-p
オプションを使用すると、コンテナのポートをマッピングするホストのポートを指定できる。
以下の例では、ホストPCの12345番ポートをコンテナの80番ポートにマッピングしている。
sudo docker run -it -p 12345:80 <イメージ名> /bin/bash
-P
オプションを指定すると、コンテナが使うポートがランダムにホストのポートにマッピングされる。
sudo docker run -it -P <イメージ名>
どのポートにマッピングされたかは、sudo docker ps
コマンドまたはsudo docker port <CONTAINER ID>
で確認できる。
sudo docker port <CONTAINER ID> # 出力例 443/tcp -> 0.0.0.0:32770 80/tcp -> 0.0.0.0:32771
ディレクトリの共有
run
コマンドにおいて、-v
オプションまたは–-volume
オプションを指定することにより、
コンテナ内のボリュームとローカル環境のボリュームを接続することができる。
sudo docker run -d -p 12345:80 -v /home/user/htdocs:/var/www/html <イメージ名>
バックグラウンドでの実行
run
コマンドにおいて、-d
オプションまたは-–detach
を指定することにより、コンテナをバックグラウンドを実行することができる。
実行直後にコンテナIDが表示される。
sudo docker run -d <イメージ名>
DockerコンテナからDockerイメージを作成する
まず、Dockerコンテナを停止する。
sudo docker container stop <CONTAINER IDまたはコンテナ名>
次に、停止したDockerコンテナからDockerイメージを作成する。
sudo docker commit <CONTAINER IDまたはコンテナ名> <イメージのリポジトリ名>:<イメージのタグ名>
作成したDcockerイメージを確認する。
sudo docker images
作成したDockerイメージからDockerコンテナを作成する。
sudo docker run -it --name <CONTAINER IDまたはコンテナ名> <イメージのリポジトリ名>:<イメージのタグ名> /bin/bash
Dokerイメージのエクスポートおよびインポート
まず、Dockerコンテナを停止する。
sudo docker container stop <Dockerコンテナ名またはDockerコンテナのID名> # または sudo docker stop <Dockerコンテナ名またはDockerコンテナのID名>
必要であれば、Dockerコンテナでの変更をDockerイメージに反映する。
sudo docker commit <Dockerコンテナ名またはDockerコンテナのID名> <イメージのリポジトリ名>:<イメージのタグ名>
Dockerイメージに付随するレイヤの情報(メタ情報)等を含めたイメージを保存する。
sudo docker save <オプション> <イメージ名> > <保存するファイル名> # または sudo docker save <オプション> <イメージ名> -o <保存するファイル名> # 例. Dockerイメージのsample-imageをsample-image.tarとして保存する sudo docker save sample-image > sample-image.tar
エクスポートしたDockerイメージファイルをインポートする場合は、load
コマンドを使用する。
sudo docker load < <エクスポートしたDockerのファイル名> # 例. エクスポートしたファイルであるsample-image.tarファイルをインポートする sudo docker load < sample-image.tar
Dokerコンテナのエクスポートおよびインポート
まず、Dockerコンテナを停止する。
sudo docker container stop <コンテナ名またはコンテナID> # または sudo docker stop <コンテナ名またはコンテナID>
必要であれば、Dockerコンテナでの変更をDockerイメージに反映する。
sudo docker commit <Dockerコンテナ名またはDockerコンテナのID名> <イメージのリポジトリ名>:<イメージのタグ名>
コンテナのメタ情報等は保存されず、ファイルシステムのコピーがそのまま保存される。
sudo docker export <オプション> <コンテナ名またはコンテナID> > <保存するファイル名> # 例. Dockerコンテナのsample-containerをsample-container.tarとして保存する sudo docker export sample-container > sample-container.tar
エクスポートしたDockerコンテナファイルをインポートする場合は、import
コマンドを使用する。
sudo docker import <エクスポートしたコンテナファイル名> - <リポジトリ名>:<タグ名> # 例. エクスポートしたsample-container.tarファイルをインポートする sudo docker import < sample-container.tar - sample-container:latest # または cat sample-container.tar | sudo docker import - sample-container:latest