第四章 : Dockerコマンド - container編
本章では、Dockerコマンドの container
について記載します。
コンテナ操作
コンテナの操作は、 docker container
コマンドを使います。 docker container
で利用できるコマンドは以下の通りです。
おすすめ の ★️ の数は、数が多いほどよく使うコマンドです(筆者の独断と偏見)。なので、ざっくりと読みたい方は ★️ が多いコマンドを見てもらうといいと思います。
おすすめ | コマンド | 概要 |
---|---|---|
★️★️★️ | attach | 実行中のコンテナの標準入出力に接続する |
★️★️★️ | commit | コンテナーでの変更を含めたイメージを作成する |
★️★️★️ | cp | ホストとコンテナ間でファイル/ディレクトリのコピーをする |
★️★️★️ | create | 新しいコンテナを作成する |
★️★️★️ | exec | 実行中のコンテナでコマンドを実行する |
★️★️★️ | logs | コンテナのログを取得する |
★️★️★️ | ls | コンテナの一覧を表示する |
★️★️★️ | rm | コンテナを削除する |
★️★️★️ | run | Run a command in a new container |
★️★️★️ | start | 停止中のコンテナを開始する |
★️★️★️ | stats | コンテナのリソースをリアルタイムで表示する |
★️★️★️ | stop | 実行中のコンテナを停止する |
★️★️ | diff | コンテナ内のファイル・ディレクトリの変更を検査する |
★️★️ | kill | 実行中のコンテナを停止する |
★️★️ | pause | コンテナの全てのプロセスを中断する |
★️★️️ | restart | コンテナを再起動する |
★️★️️ | top | 実行中のコンテナのプロセスIDを表示する |
★️★️️ | unpause | コンテナの一時停止を解除する |
★️★️️ | update | コンテナの設定を更新する |
★️ | export | コンテナのファイルシステムをtarアーカイブとして出力する |
★️ | inspect | コンテナの詳細情報を表示する |
★️ | port | コンテナに割り当てられているポートを出力する |
★️ | prune | 停止中のコンテナを全て削除する |
★️ | rename | コンテナの名前をリネームする |
★️️ | wait | コンテナの停止を阻止し、コンテナが終了するときに終了コードを表示する |
[おすすめ度:★️★️★️] attach コマンド
コマンド例は、 docker container attach [OPTIONS] CONTAINER
です。OPTIONSは、 docker container attach --help
で見ることができます。
attach
コマンドは、実行中のコンテナの PID=1(プロセス) の標準入出力(stdin/stdout)に接続します。
docker container attach
で接続し、 ps -ef
コマンドで見ると PID=1 以外動いておらず、 ps -ef
のPPIDが 1 になっていることから、 PID=1 に接続していることがわかります。
~ $ docker container attach 136fb1ae1ac6
root@136fb1ae1ac6:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 16:59 pts/0 00:00:00 /bin/bash
root 11 1 0 17:00 pts/0 00:00:00 ps -ef
この状態で exit
をすると コンテナが終了します。
Dockerの公式ドキュメントに明言はされていませんが、initプロセス(全ての親のプロセス)にあたるものを終了させたらコンテナとして稼働し続けることができないため、コンテナが終了すると解釈しています。
参考
[おすすめ度:★️★️★️] commit コマンド
コマンド例は、 docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
です。OPTIONSは、 docker container commit --help
で見ることができます。
commit
コマンドは、コンテナ内の変更をイメージとして書き出すことができます。コンテナ内の変更分は、元のイメージからの差分として書き込まれます。
nginxのイメージからコンテナを起動します(nginxのレイヤーは3層( docker image inspect nginx
で確認))。
~ $ docker image inspect nginx
// 省略
"Type": "layers",
"Layers": [
"sha256:237472299760d6726d376385edd9e79c310fe91d794bc9870d038417d448c2d5",
"sha256:bc5b41ec0cfa1171299c2b433f23caf3ca07ee275dfd187858882caad6723dd9",
"sha256:86df2a1b653b072715d7e0f712ef3204341a241258cf33960f650df2b904dd44"
]
// 省略
~ $ docker run -it -d --rm -p 8000:80 nginx
20df82d1b7e4c8eac0ab057528a1cf03a560c4f895c5f204f73621dc73d45a06
~ $ docker ps # 起動しているコンテナを確認
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
20df82d1b7e4 nginx "nginx -g 'daemon of…" 31 seconds ago Up 30 seconds 0.0.0.0:8000->80/tcp heuristic_dubinsky
~ $ docker container exec -it 20df82d1b7e4 /bin/sh # コンテナ内に侵入
# pwd
/
# touch /usr/share/nginx/html/404.html # 404.htmlを作成
# exit # コンテナから抜ける
この状態で commit
をします。
~ $ docker container commit 20df82d1b7e4 added-404-nginx:latest
sha256:21a3dcb9d5f1a48e2aa66f73f37e1769f16b941206087e065784c2dd31503b65
~ $ docker image ls # イメージが作成できたか確認
REPOSITORY TAG IMAGE ID CREATED SIZE
added-404-nginx latest 21a3dcb9d5f1 35 seconds ago 109MB
nginx latest dbfc48660aeb 11 days ago 109MB
~ $ docker image inspect added-404-nginx # 作成されたイメージを確認
"Type": "layers",
"Layers": [
"sha256:237472299760d6726d376385edd9e79c310fe91d794bc9870d038417d448c2d5",
"sha256:bc5b41ec0cfa1171299c2b433f23caf3ca07ee275dfd187858882caad6723dd9",
"sha256:86df2a1b653b072715d7e0f712ef3204341a241258cf33960f650df2b904dd44",
"sha256:3bbd497c23c5a4a5560b23aa3f1c2949626c610e59f9b46e65ba954d328170ee" # ←追加されたイメージ
]
commit
はコンテナに変更した内容をイメージとして作成できるので、デフォルトのイメージにちょっとした変更をしたいものをチームに共有したりする時に便利です。
[おすすめ度:★️★️★️] cp コマンド
コマンド例は、 docker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
または docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
です。OPTIONSは、 docker container cp --help
で見ることができます。
cp
コマンドで、ホストとコンテナー間でファイルのやりとりができます。このコマンドは、コンテナの状態に関わらず、ファイル/ディレクトリのコピーができます。コピー時にパーミッションは、 cp -a
のオプションと同じような挙動となります。
また、コピーをする場合はパスに対して若干注意が必要です。
- ホストのパスは、 作業ディレクトリからの 相対パス となります
- コンテナのパスは、 ルートからの 絶対パス となります。
参考
[おすすめ度:★️★️★️] create コマンド
コマンド例は、 docker container create [OPTIONS] IMAGE [COMMAND] [ARG...]
です。OPTIONSは、 docker container create --help
で見ることができます。
create
コマンドはイメージからコンテナを作る時に利用します。
nginxのコンテナを作る時は以下のようになります。
~ $ docker container create --rm --name demo-server1 nginx
3a25ac6a45c37ab28ee50f02600117300657effffb88e0b8ba81b94756389025
参考
[おすすめ度:★️★️★️] exec コマンド
コマンド例は、 docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]
です。OPTIONSは、 docker container exec --help
で見ることができます。
exec
コマンドは、実行中のコンテナでコマンドを実行することができます。
~ $ docker run -it -d --rm --name ubuntu_bash ubuntu
865f00275d7c2e4020d4dd8a12d75fbe2821f9ea4b1e69c814ea58287ebc8e68
~ $ docker container exec ubuntu_bash date # dateコマンドの実行
Sat Oct 27 14:45:12 UTC 2018
コンテナに接続する場合は、 -it
オプションを利用します。
-
-i
: 標準入力をオープンにしておく -
-t
: 擬似端末を割り当てる
~ $ docker container exec -it ubuntu_bash /bin/bash
root@865f00275d7c:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 14:44 pts/0 00:00:00 /bin/bash
root 44 0 1 15:02 pts/1 00:00:00 /bin/bash
root 54 44 0 15:02 pts/1 00:00:00 ps -ef
上記だと、 PID=44 が割り当てられた端末であることがわかります。
[おすすめ度:★️★️★️] logs コマンド
コマンド例は、 docker container logs [OPTIONS] CONTAINER
です。OPTIONSは、 docker container logs --help
で見ることができます。
logs
コマンドは、コンテナのログを取得するコマンドです。logsコマンドの取得対象は、 標準出力 または 標準エラー です。
実際にnginxが実行されているコンテナのログを取得する場合は、以下の通りです。
04 $ docker ps // コンテナの起動確認
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
44dec39e04b6 nginx "nginx -g 'daemon of…" 10 minutes ago Up 10 minutes 0.0.0.0:80->80/tcp dazzling_sammet
04 $ docker container logs 44dec39e04b6
172.17.0.1 - - [06/Nov/2018:13:48:28 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36" "-"
2018/11/06 13:48:28 [error] 6#6: *2 open() "/usr/share/nginx/html/robots.txt" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /robots.txt HTTP/1.1", host: "localhost"
172.17.0.1 - - [06/Nov/2018:13:48:28 +0000] "GET /robots.txt HTTP/1.1" 404 555 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36" "-"
また、ログをtailコマンドのように出力を追い続けたい場合は、 -f
オプションを利用します。
docker container logs -f <コンテナ>
[おすすめ度:★️★️★️] ls コマンド
コマンド例は、 docker container ls [OPTIONS]
です。OPTIONSは、 docker container ls --help
で見ることができます。
ls
コマンドは、コンテナの一覧を表示します。オプションを指定しない場合は、実行中のコンテナを表示します。全てのコンテナを表示したい場合は、 -a | --all
オプションを指定します。
04 $ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
44dec39e04b6 nginx "nginx -g 'daemon of…" 30 minutes ago Up 30 minutes 0.0.0.0:80->80/tcp dazzling_sammet
[おすすめ度:★★★] rm コマンド
コマンド例は、 docker container rm [OPTIONS] CONTAINER [CONTAINER...]
です。OPTIONSは、 docker container rm --help
で見ることができます。
rm
コマンドは、コンテナを削除します。 -v
を指定すると、コンテナに関連づけられている volume との関連を削除します。
04 $ docker run --name ubuntu01 -d -it ubuntu /bin/bash
6b01c6f33880f1427e5f2da70ff25fff303670aeafca4cbd75ec7516f410c45f
04 $ docker container stop ubuntu01
ubuntu01
04 $ docker container ls --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b01c6f33880 ubuntu "/bin/bash" 15 seconds ago Exited (0) 9 seconds ago ubuntu01
04 $ docker container rm ubuntu01
ubuntu01
04 $ docker container ls --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef5fea93
[おすすめ度:★★★] run コマンド
コマンド例は、 docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
です。OPTIONSは、 docker container run --help
で見ることができます。
run
コマンドは、新しいコンテナを作成、実行します。
筆者がよく使うオプションは、以下の通りです
-
-d
: コンテナをバックグランドで実行する -
-p
: パブリッシュするポートを指定する -
--name
: コンテナにコンテナ名を指定する(指定しない場合は適当な名前がつけられる) -
-i
: 標準入力をオープンする(標準入力にアタッチしていなくてもOK) -
-t
: 擬似端末を割り当てる -
--rm
: コンテナ終了時にコンテナを削除する -
--mount or -v
: ファイルシステムをコンテナにマウントする- 上記オプションについては こちらの記事を参照してください
04 $ docker run -d --name nginx-demo01 --rm -p 80:80 nginx
d1ee68331236c7ac29818aefe250af098067cd852c2ca41c0c44b16bff49ce01
04 $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d1ee68331236 nginx "nginx -g 'daemon of…" 9 seconds ago Up 8 seconds 0.0.0.0:80->80/tcp nginx-demo01
[おすすめ度:★★★] start コマンド
コマンド例は、 docker container start [OPTIONS] CONTAINER [CONTAINER...]
です。OPTIONSは、 docker container start --help
で見ることができます。
start
コマンドは、停止中のコンテナを開始します。
起動時に標準出力と標準エラーにアタッチしたい場合は、 -a
--attach
オプションを指定します。
04 $ docker container ls --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
04 $ docker container create --name ubuntu01 -it ubuntu /bin/bash // コンテナを作成
2397c733db5c848d28b6be16194819705ba0ee86ca5c0e00ef4177379ab7c801
04 $ docker container ls --all // コンテナの作成を確認
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2397c733db5c ubuntu "/bin/bash" 5 seconds ago Created ubuntu01
04 $ docker container start ubuntu01 // コンテナの開始
ubuntu01
04 $ docker ps // コンテナの起動を確認
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2397c733db5c ubuntu "/bin/bash" 16 seconds ago Up 5 seconds ubuntu01
また、起動時に標準入力にアタッチしたい場合は、 -i
オプションを指定します。標準入力にアタッチするときは、PID=1にアタッチします。
また、コンテナから exit
で抜けるとPID=1にアクセスしているので、コンテナは停止します。
04 $ docker container start -i ubuntu01
root@2397c733db5c:/# pwd
/
root@2397c733db5c:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 13:41 pts/0 00:00:00 /bin/bash
root 10 1 0 13:41 pts/0 00:00:00 ps -ef
[おすすめ度:★★★] stats コマンド
コマンド例は、 docker container stats [OPTIONS] [CONTAINER...]
です。OPTIONSは、 docker container stats --help
で見ることができます。
stats
コマンドは、コンテナのリソース状況をリアルタイムで表示します。
04 $ docker container start ubuntu01
ubuntu01
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
2397c733db5c ubuntu01 0.00% 760KiB / 1.952GiB 0.04% 758B / 0B 0B / 0B 1
リソース状況は stats
で確認してもいいですが、他にも見る方法がありますので、お好みでいいと思います。
[おすすめ度:★★★] stop コマンド
コマンド例は、 docker container stop [OPTIONS] CONTAINER [CONTAINER...]
です。OPTIONSは、 docker container stop --help
で見ることができます。
stop
コマンドは、実行中のコンテナを停止させるコマンドです。
04 $ docker run -d --name nginx-demo01 --rm -p 80:80 nginx
f095b7d9328a9b5e4f60abe03eeceb3fcc59955c4def304d2c35cb0792abd7de
04 $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f095b7d9328a nginx "nginx -g 'daemon of…" 3 seconds ago Up 2 seconds 0.0.0.0:80->80/tcp nginx-demo01
04 $ docker container stop nginx-demo01
nginx-demo01
04 $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[おすすめ度:★️★️] diff コマンド
コマンド例は、 docker container diff CONTAINER
です。OPTIONSは、 docker container diff --help
で見ることができます。
diff
コマンドは、コンテナを作成・起動してから、コンテナ内であった差分を出力するコマンドです。
以下は、ubuntuのコンテナを起動し、rootユーザのホームディレクトリにファイルを作成した場合の差分です。
~ $ docker run -it ubuntu # ubuntu起動
root@e91fff55445f:/# cd ~ # rootへ移動
root@e91fff55445f:~# echo "hello ubuntu" > hello.txt # 適当なファイルを書き出す
root@e91fff55445f:~# exit # 抜ける
exit
~ $ docker container diff e91fff55445f # 差分を見る
C /root
A /root/.bash_history
A /root/hello.txt
ファイル作成した様子と、コマンドの履歴が差分として表示されていることがわかります。
各シンボルの内容は以下の通りです。
シンボル | 説明 |
---|---|
A | 追加 |
C | 変更 |
D | 削除 |
[おすすめ度:★️☆️] kill コマンド
コマンド例は、 docker container kill [OPTIONS] CONTAINER [CONTAINER...]
です。OPTIONSは、 docker container kill --help
で見ることができます。
kill
コマンドは、実行中のコンテナを停止することができます。killコマンドのデフォルトは SIG_KILL です。
killコマンドは停止対象のコンテナを停止したにも関わらず、止まらない場合に使用するのがいいでしょう。また、stopより正常に停止したコンテナのリExitコードは0となりますが、killコマンドで停止した場合、Exitコードは128+ シグナルの番号
となります。
たとえば、nginxをSIG_KILL(9)で停止した場合は、 137 が終了コードとなります。
04 $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
04 $ docker run -d nginx // コンテナ起動
dbcfe3a093120bfa0ce41bd8f74cd4d0dbc1e774f7ea4cb9d8036e447bfe97e6
04 $ docker ps // 実行中のコンテナ確認
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dbcfe3a09312 nginx "nginx -g 'daemon of…" 3 seconds ago Up 2 seconds 80/tcp wizardly_shockley
04 $ docker container kill dbcfe3a09312 // 有効なコンテナをkillする
dbcfe3a09312
04 $ docker container ls --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dbcfe3a09312 nginx "nginx -g 'daemon of…" 25 seconds ago Exited (137) 8 seconds ago wizardly_shockley // Exitコードが **137** になっている。
[おすすめ度:★️★️] pause コマンド
コマンド例は、 docker container pause CONTAINER [CONTAINER...]
です。OPTIONSは、 docker container pause --help
で見ることができます。
ls
コマンドは、実行中のコンテナのプロセスを一時停止します。また、一時停止の解除には、 unpause
コマンドを利用します。
04 $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
44dec39e04b6 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour 0.0.0.0:80->80/tcp dazzling_sammet
04 $ docker container pause 44dec39e04b6
44dec39e04b6
04 $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
44dec39e04b6 nginx "nginx -g 'daemon of…" About an hour ago Up About an hour (Paused) 0.0.0.0:80->80/tcp dazzling_sammet
pauseをすると、STATUS欄がPausedとなり、一時停止中であることがわかります。
[おすすめ度:★️★️] restart コマンド
コマンド例は、 docker container restart [OPTIONS] CONTAINER [CONTAINER...]
です。OPTIONSは、 docker container restart --help
で見ることができます。
restart
コマンドは、コンテナを再起動します。オプションである通り、コマンド実行から再起動が行われるまでの時間は、デフォルト 10秒 です。
また、コンテナに --rm
オプションを指定していても問題なく再起動します(削除されたら困りますね...)。
~ $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b958ce10803d nginx "nginx -g 'daemon of…" 5 minutes ago Up 5 minutes 80/tcp webserver
~ $ docker container restart -t 0 b958ce10803d
b958ce10803d
~ $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b958ce10803d nginx "nginx -g 'daemon of…" 7 minutes ago Up 4 seconds 80/tcp webserver
psコマンドの結果のSTATUSを見ると、再起動されていることがわかります。
[おすすめ度:★★] top コマンド
コマンド例は、 docker container top CONTAINER [ps OPTIONS]
です。OPTIONSは、 docker container top --help
で見ることができます。
top
コマンドは、実行中のコンテナのプロセスIDを表示します。
04 $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
893ae1e197a9 nginx "nginx -g 'daemon of…" 19 hours ago Up 19 hours 0.0.0.0:80->80/tcp nginx-demo01
04 $ docker container top nginx-demo01
PID USER TIME COMMAND
2387 root 0:00 nginx: master process nginx -g daemon off;
2424 101 0:00 nginx: worker process
[おすすめ度:★★] unpause コマンド
コマンド例は、 docker container unpause CONTAINER [CONTAINER...]
です。OPTIONSは、 docker container unpause --help
で見ることができます。
unpause
コマンドは、コンテナの一時停止を解除するコマンドです。
04 $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
893ae1e197a9 nginx "nginx -g 'daemon of…" 19 hours ago Up 19 hours 0.0.0.0:80->80/tcp nginx-demo01
04 $ docker container pause nginx-demo01
nginx-demo01
04 $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
893ae1e197a9 nginx "nginx -g 'daemon of…" 19 hours ago Up 19 hours (Paused) 0.0.0.0:80->80/tcp nginx-demo01
04 $ docker container unpause nginx-demo01
nginx-demo01
04 $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
893ae1e197a9 nginx "nginx -g 'daemon of…" 19 hours ago Up 19 hours 0.0.0.0:80->80/tcp nginx-demo01
[おすすめ度:★★] update コマンド
コマンド例は、 docker container update [OPTIONS] CONTAINER [CONTAINER...]
です。OPTIONSは、 docker container update --help
で見ることができます。
update
コマンドは、コンテナの設定を更新するコマンドです。
[おすすめ度:★️] export コマンド
コマンド例は、 docker container export [OPTIONS] CONTAINER
です。OPTIONSは、 docker container export --help
で見ることができます。
export
コマンドは、コンテナのファイルシステムをtarアーカイブとして出力することができます。説明では、tarアーカイブを出力すると書いていますが、実際は、標準出力になります。また、exportコマンドで出力したアーカイブは、 import
コマンドで読み込むことができます。 importコマンドは後ほど説明しますが、tarアーカイブから新しいコンテナを作成することができます。
実際にコンテナを出力する場合は以下のようになります。
export $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1048ff9c19a0 nginx "/bin/sh" 2 minutes ago Up 2 minutes 80/tcp demo-export
export $ docker container export -o nginx_container.tar 1048ff9c19a0 // -o でファイルパスを指定
export $ l
total 243072
-rw------- 1 ozawa staff 111121408 11 4 21:57 nginx_container.tar // ファイルが生成されていることがわかる
tar tf nginx_container.tar
でコンテナの中身を見ることができるので、気になる方は確認してみましょう。
[おすすめ度:★️] inspect コマンド
コマンド例は、 docker container inspect [OPTIONS] CONTAINER [CONTAINER...]
です。OPTIONSは、 docker container inspect --help
で見ることができます。
inspect
コマンドは、実行中のコンテナの詳細を見ることができます。
inspectコマンドはそんなに多用するイメージがないので、おすすめ度は★️にしています。
[おすすめ度:★️] port コマンド
コマンド例は、 docker container port CONTAINER [PRIVATE_PORT[/PROTO]]
です。OPTIONSは、 docker container port --help
で見ることができます。
port
コマンドは、コンテナが割り当てているポートを出力します。
~ $ docker run -d --rm -p 80:80 nginx
13b4eca3336b54881d19dc5bfad6006b0b9d52c67ad05fd318a6725de5529a23
~ $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13b4eca3336b nginx "nginx -g 'daemon of…" 3 seconds ago Up 2 seconds 0.0.0.0:80->80/tcp silly_hawking
~ $ docker container port 13b4eca3336b
80/tcp -> 0.0.0.0:80
ポートについては、 ls
コマンドで代用が聞くのでそんなに利用頻度は高くないと感じています。
[おすすめ度:★️] prune コマンド
コマンド例は、 docker container prune [OPTIONS]
です。OPTIONSは、 docker container prune --help
で見ることができます。
prune
コマンドは、停止中のコンテナを削除します。
~ $ docker container ls --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13b4eca3336b nginx "nginx -g 'daemon of…" 33 minutes ago Up 33 minutes 0.0.0.0:80->80/tcp silly_hawking
44dec39e04b6 nginx "nginx -g 'daemon of…" 4 days ago Exited (255) 3 days ago 0.0.0.0:80->80/tcp dazzling_sammet
// 省略 ...
~ $ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
44dec39e04b634c6e1b8e283671d8c0e0d7968449fa2723531add48e0ab79ac6
b3c890612036931092e7e08617f0b30f6a4a6741903b97a2460288c018b0f93a
dbcfe3a093120bfa0ce41bd8f74cd4d0dbc1e774f7ea4cb9d8036e447bfe97e6
5931bb3e918db6c38431991283923e66639a4460c6072650168ada7111bca681
0879ef2b0f1e8af8501866bab26c34c3f4c068b7167cb8d0a1b9935701f9952d
059244238ecf9f4e8a5d4580abd9843b219a6170f503165960486d746a92e0b7
daf42f9d8f7bc2ba382b422e8d3739c96d9e732a282b3759c7685187ad386723
68991edbb3cbb197ef7b5a95d9478d7f3ee8a4b54df44ee719fdf6ebc1382b18
da6f69666bf23694f708289059eb7fee78abf3e24885f3f8e33120f3a620422c
921b103d49720d9a5ef0cfb3983b117948186ebac50730d934721c3f93af70ee
e91fff55445f91ca372946b2c799c47e559d5b9d0981d741e57229e379ef4c92
fb95fdb3c3542e27a5c99b2b3a80a92a65dafe4480a96d5bb582da3215627b31
c50e63316663492dc812c7f6f7b45bf3a1cde354d63ca3eda49fb1f3a224a94d
415183f9ed4215f73576615b1b209fa833e8bda851b9fae9ca80fabb23413bc6
e905fa6605313ada518ab75e3fde29a1b7a7cedd22a80abba00c161a1e9c2b5b
45a43179c11df1c99c4f93fb880ddcd5cdf7dcad9388c3186df5a569360e2612
aff698495ab9532d9c9a1c7face1101ad8fffd05f378131c0b430321221a44e1
256ae14ca2fb3b8583d1d6063df107b325ef617363f9d5a432d47862793c7059
Total reclaimed space: 640.5MB
~ $
pruneコマンドは上記の通り、停止中のコンテナを削除するため、必ず実行前に確認のメッセージが表示されます。
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
削除するときは、かならず確認してから実行しましょう。
[おすすめ度:★️] rename コマンド
コマンド例は、 docker container rename CONTAINER NEW_NAME
です。OPTIONSは、 docker container rename --help
で見ることができます。
rename
コマンドは、コンテナの名前をリネームします。リネームは、コンテナが起動中でも実行できます。
[おすすめ度:★] wait コマンド
コマンド例は、 docker container wait CONTAINER [CONTAINER...]
です。OPTIONSは、 docker container wait --help
で見ることができます。
wait
コマンドは、コンテナの停止を阻止し、コンテナが終了するときに終了コードを表示する。
04 $ docker run -d --name nginx-demo01 --rm -p 80:80 nginx
97a9e94ae935d230137b317413590320c70c6b69b7f4960bc7375c6b9649cc72
04 $ docker container wait nginx-demo01
wait
コマンドを実行すると今開いているターミナルからの入力ができなくなるので、別のターミナルから以下のコマンドを実行します。
~ $ docker container stop nginx-demo01
nginx-demo01
もともと開いていた端末では以下のように表示されます。
04 $ docker container wait nginx-demo01
0 # ここに終了コードが表示される
一通りのコマンドを列挙してみましたが、結構なボリュームがあり、書いている途中でしんどくなってしまい、ところどころ内容が薄くなってしまいました。また、 run
コマンドはオプションが多く、Dockerを扱う中でもかなり重要なコマンドだと感じているので別途まとめようかと思います。
まとめ一覧
Dockerの基礎をまとめてみた ~ 第一章:コンテナ?Dockerとは?
Dockerの基礎をまとめてみた ~ 第二章:Dockerの基本操作
Dockerの基礎をまとめてみた ~ 第三章:Dockerコマンド - image編
Dockerの基礎をまとめてみた ~ 第四章:Dockerコマンド - container編