コンテナーを管理するための 15 の Docker コマンド [リスト、停止、開始、削除など]

公開: 2021-08-17

Docker は、コンテナー化されたアプリケーションを構築して実行するための一般的なツールです。 複数のプラットフォームで利用でき、Kubernetes のバックエンド コンテナー テクノロジの 1 つとして使用されます。

Docker では、独自のイメージを構築してアプリケーションをコンテナーとして実行するか、Docker リポジトリから何千ものパブリック イメージをプルして使用し、それらをプロジェクトで使用することができます。 イメージの準備ができたら、それらのイメージを使用してコンテナーを起動できます。 コンテナーは、Docker イメージの実行中のインスタンスです。

Docker コンテナーの管理は、Docker ホスト/コンテナーを管理するシステム管理者として注意すべき最も重要な側面の 1 つです。

この記事では、docker コマンドを使用したコンテナーの管理に焦点を当てます。

コマンドを実行

docker runコマンドは、 Image IDまたはRepositoryおよび/またはTag名を指定して、イメージからコンテナーを実行するために使用されます。

 $ docker run {image}

例:

 $ docker run nginx

上記のコマンドは、docker ホスト上に<span class="NormalTextRun SpellingErrorV2 SCXW251451022 BCX0">nginx</span>アプリケーションのインスタンスが既に存在する場合、そのインスタンスを実行します。 Docker ホストに存在しない場合は、docker ハブ (デフォルト) に送信され、イメージがプルダウンされます。 しかし、これは最初だけ行われます。 それ以降は、同じ画像が再利用されます。

イメージの特定のバージョンを実行する場合は、そのバージョンをコロンで区切って指定します。 これはTagとして知られています。 タグを指定しない場合、docker はデフォルトで最新と見なします。

さらに、コンテナをデタッチ モードでバックグラウンドで実行して、Docker がコンテナを起動した後にプロンプ​​トに戻る場合は、 -dフラグを使用します。

例:

 $ docker run nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx 33847f680f63: Pull complete dbb907d5159d: Pull complete 8a268f30c42a: Pull complete b10cf527a02d: Pull complete c90b090c213b: Pull complete 1f41b2f2bf94: Pull complete Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90 Status: Downloaded newer image for nginx:latest /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/08/15 12:13:23 [notice] 1#1: using the "epoll" event method 2021/08/15 12:13:23 [notice] 1#1: nginx/1.21.1 2021/08/15 12:13:23 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6) 2021/08/15 12:13:23 [notice] 1#1: OS: Linux 5.8.0-1039-azure 2021/08/15 12:13:23 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2021/08/15 12:13:23 [notice] 1#1: start worker processes 2021/08/15 12:13:23 [notice] 1#1: start worker process 33 2021/08/15 12:13:23 [notice] 1#1: start worker process 34

ps コマンド

docker psコマンドは、実行中のすべてのコンテナーとそれらに関するいくつかの基本情報を一覧表示します。 コンテナー ID と同様に、イメージの名前、コンテナーが作成された時刻、現在の状態、およびコンテナーの名前。 各コンテナーは、ランダムな名前 (明示的に指定されていない場合) と ID を取得します。

例:

 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 133f5e0267a5 nginx "/docker-entrypoint.…" 10 seconds ago Up 10 seconds 80/tcp jolly_elion

実行中および実行中でない/終了したすべてのコンテナを一度に一覧表示するには、次を使用できます。

 $ docker ps -a

例:

 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fcec129f0eb4 nginx "/docker-entrypoint.…" 46 hours ago Exited (0) 46 hours ago interesting_ishizaka 6e8b1e441aa6 hello-world "/hello" 2 days ago Exited (0) 2 days ago keen_shirley

ls コマンド

psコマンドと同様に、 lsもコンテナーの一覧表示に使用できます。 -aフラグを使用して、すべてのコンテナー (実行中のコンテナーだけでなく) を一覧表示できます。

 $ docker container ls

例:

 $ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 15796e91c30b redis "docker-entrypoint.s…" 2 seconds ago Up 1 second 6379/tcp flamboyant_neumann 904390b65d45 nginx "/docker-entrypoint.…" 14 minutes ago Up 14 minutes 80/tcp nginx_new $

停止コマンド

docker stopコマンドは、実行中のコンテナーを停止するために使用されます。 ここでは、コンテナ名または ID をこれと一緒に入力する必要があります。

 $ docker stop {container-id}

成功すると、docker 名または ID が返されます。

例:

 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 133f5e0267a5 nginx "/docker-entrypoint.…" 50 seconds ago Up 49 seconds 80/tcp jolly_elion

これにより、コンテナーを停止するために使用できるCONTAINER IDが返されます。

 $ docker stop 133f5 133f5

この例と今後の例では、 CONTAINER IDの完全な値を指定する必要がないことに注意してください。 一部まで受け入れるため、Docker はどのコンテナーを停止するかを認識しているため、他の実行中のコンテナーの中で一意になります。

rm コマンド

docker rmコマンドは、停止または終了したコンテナーを削除します。

 $ docker rm {CONTAINER NAME or ID}

例:

 $ docker rm 133f5 133f5 $

exec コマンド

execコマンドを使用して、実行中のコンテナー内に移動できます。 これは、実行中のコンテナーをデバッグしたり、コンテナー内で何かを実行したりするのに役立ちます。

 $ docker exec –it {container} {command}

例:

対話モードでunruffled_meninskyという名前のコンテナー内でbashシェルを起動するとします (イメージで Bash が使用可能であると仮定すると、他の使用可能なシェルも使用できます)。

 $ docker exec –it unruffled_meninsky /bin/bash

これにより、 bashシェルのコンテナー内に着陸するはずです。 ここで、フラグ-iは対話モードを表し、 -tはターミナルを表します。 1 つ以上のコマンドを実行してコンテナーを終了するだけの場合は、次を使用できます。

 $ docker exec unruffled_meninsky cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 cd2eed4acf34

ログ コマンド

コンテナーがデタッチ モードで起動され、そのログを確認したい場合は、 logsコマンドを使用してそのログを確認できます。

 $ docker logs {CONTAINER NAME or ID}

例:

 $ docker logs 7da6dcebaf9c /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/08/15 12:14:09 [notice] 1#1: using the "epoll" event method 2021/08/15 12:14:09 [notice] 1#1: nginx/1.21.1 2021/08/15 12:14:09 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6) 2021/08/15 12:14:09 [notice] 1#1: OS: Linux 5.8.0-1039-azure 2021/08/15 12:14:09 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2021/08/15 12:14:09 [notice] 1#1: start worker processes 2021/08/15 12:14:09 [notice] 1#1: start worker process 31 2021/08/15 12:14:09 [notice] 1#1: start worker process 32 $

cp コマンド

コンテナーと localhost ファイルシステムの間でファイルをコピーするには、 cpコマンドを使用できます。

 $ docker container cp {CONTAINER NAME or ID:SRC_PATH} {DEST_PATH}|-

例:

 $ docker container cp quirky_cray:/etc/nginx/nginx.conf nginx.conf.bkp

export コマンド

Docker コンテナー コマンドは、コンテナーのファイルシステムを TAR ファイルとしてエクスポートするオプションを提供します。

 $ docker container export {CONTAINER NAME or ID}

コマンドを調べる

次のようにinspectコマンドを使用して、コンテナに関する詳細情報を確認できます。

 $ docker inspect {CONTAINER NAME or ID}

また

$ docker container inspect {CONTAINER NAME or ID}

kill コマンド

オプションの--signalまたは-sフラグを指定してkillコマンドを使用すると、実行中のコンテナーを強制終了できます。 複数のコンテナーを指定して、それらを一度に強制終了できます。

 $ docker kill {CONTAINER NAME or ID} [--signal VAL]

例:

 $ docker kill cd9005a0b5d2 -s 9 cd9005a0b5d2 $

統計コマンド

コンテナーのリソース使用状況のライブ ストリームを表示するには、 statsコマンドを使用できます。

 $ docker container stats {CONTAINER NAME or ID}

例:

 $ docker container stats thirsty_volhard CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 904390b65d45 thirsty_volhard 0.00% 3.406MiB / 7.775GiB 0.04% 1.02kB / 0B 0B / 8.19kB 3

コマンド

Linux のtopコマンドのように、Docker で実行中のプロセスのリストを取得するために使用できます。

 $ docker container top {CONTAINER NAME or ID}

例:

 $ docker container top thirsty_volhard UID PID PPID C STIME TTY TIME CMD root 2603 2582 0 12:34 ? 00:00:00 nginx: master process nginx -g daemon off; systemd+ 2659 2603 0 12:34 ? 00:00:00 nginx: worker process systemd+ 2660 2603 0 12:34 ? 00:00:00 nginx: worker process $

rename コマンド

既存のコンテナーの名前を変更するには、 renameコマンドを使用します。

 $ docker container rename {OLD CONTAINER NAME} {NEW CONTAINER NAME}

例:

 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 904390b65d45 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp nginx_container $ docker container rename nginx_container nginx_new $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 904390b65d45 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp nginx_new $

差分コマンド

diffコマンドを使用して、コンテナのファイルシステム上のファイルまたはディレクトリへの変更を検査できます。

 $ docker container diff {CONTAINER NAME or ID}

例:

 $ docker container diff nginx_new C /var C /var/cache C /var/cache/nginx A /var/cache/nginx/uwsgi_temp A /var/cache/nginx/client_temp A /var/cache/nginx/fastcgi_temp A /var/cache/nginx/proxy_temp A /var/cache/nginx/scgi_temp C /etc C /etc/nginx C /etc/nginx/conf.d C /etc/nginx/conf.d/default.conf C /run A /run/nginx.pid $

概要

結論として、Doker は、コンテナの作成から破棄までを管理するための広範なコマンド セットを提供します。 この記事では、いくつかの重要なコマンドとその使用法について説明しました。これにより、docker コンテナーの管理に関する良いアイデアが得られるはずです。

次に、DevOps を学習するためのリソースをいくつか見つけます。