Docker - コマンド

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

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