5
8

More than 5 years have passed since last update.

Dockerの基礎をまとめてみた ~ 第四章:Dockerコマンド - container編

Last updated at Posted at 2018-11-26

第四章 : 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編

5
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8