このDockerチュートリアルでは、単一のDockerコンテナー、複数のDockerコンテナー、または実行中のすべてのDockerコンテナーを一度に停止する方法について説明します。 Dockerコンテナを適切に停止する方法も学習します。
Dockerコンテナーを停止するには、コンテナーIDまたはコンテナー名を次のように使用するだけです。
docker stop container_ID_or_name
docker container stop container_id_or_nameコマンドを使用することもできますが、これはコマンドに1つ追加された単語であり、追加のメリットはないため、dockerstopを使用してください。
ただし、Dockerコンテナを停止することには、特にDockerの初心者の場合は、知っておくべきことがたくさんあります。
このチュートリアルでは、Dockerコンテナの停止に関するさまざまな側面について説明します:
- Dockerコンテナを停止します
- 複数のDockerコンテナを一度に停止します
- 特定の画像ですべてのDockerコンテナを停止します
- 実行中のすべてのDockerコンテナを一度に停止します
- Dockerコンテナを適切に停止する
それを確認する前に、コンテナ名またはIDを取得する方法を知っておく必要があります。
docker ps
を使用して、実行中のすべてのDockerコンテナを一覧表示できます。 指図。オプションがない場合、dockerpsコマンドは実行中のコンテナーのみを表示します。
[email protected]:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1bcf775d8cc7 ubuntu "bash" 8 minutes ago Up About a minute container-2
94f92052f55f debian "bash" 10 minutes ago Up 10 minutes container-1
出力には、コンテナ名とコンテナIDも表示されます。これら2つのいずれかを使用して、コンテナーを停止できます。
それでは、コンテナの停止に取り掛かりましょう。
1。 Dockerコンテナを停止します
特定のコンテナを停止するには、そのIDまたは名前をdockerstopコマンドで使用します。
docker stop container_name_or_ID
出力はより説明的である必要がありますが、指定したコンテナ名またはIDのいずれかが表示されるだけです:
[email protected]:~$ docker stop 1bcf775d8cc7
1bcf775d8cc7
すでに停止しているコンテナでdockerstopコマンドを使用できます。エラーや別の出力はスローされません。
docker ps -aコマンドを使用して、コンテナーが停止したかどうかを確認できます。 -aオプションは、実行中か停止中かを問わず、すべてのコンテナーを表示します。
[email protected]:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1bcf775d8cc7 ubuntu "bash" 19 minutes ago Exited (0) About a minute ago container-2
94f92052f55f debian "bash" 29 minutes ago Up 29 minutes container-1
ステータスが「終了」の場合は、コンテナがもう実行されていないことを意味します。
2。複数のDockerコンテナを停止する
複数のDockerコンテナを一度に停止することもできます。コンテナ名とIDを入力するだけです。
docker stop container_id_or_name_1 container_id_or_name_2 container_id_or_name_3
以前と同様に、出力にはコンテナの名前またはIDが表示されます:
[email protected]:~$ docker stop container-1 container-2 container-3
container-1
container-2
container-3
3。画像に関連付けられているすべてのコンテナを停止します
これまでのところ、名前やIDを明示的に言及することで、コンテナを停止するのを見てきました。
特定のDockerイメージの実行中のすべてのコンテナーを停止したい場合はどうなりますか? Dockerイメージを削除したいが、関連するすべての実行中のコンテナーを停止する必要があるシナリオを想像してみてください。
コンテナ名またはIDを1つずつ指定することもできますが、これには時間がかかります。実行できるすべてのコンテナを、ベースイメージに基づいてフィルタリングすることができます。
IMAGE_NAMEをDockerイメージ名に置き換えるだけで、そのイメージに関連付けられている実行中のすべてのコンテナーを停止できるはずです。
docker ps -q --filter ancestor=IMAGE_NAME | xargs docker stop
オプション-qは、コンテナIDのみを表示します。すばらしいxargsコマンドのおかげで、これらのコンテナーIDは引数としてdockerstopにパイプされます。
4。実行中のすべてのDockerコンテナを停止します
実行中のすべてのコンテナを停止する必要がある状況に直面する可能性があります。たとえば、Dockerですべてのコンテナを削除する場合は、事前にそれらを停止する必要があります。
これを行うには、前のセクションで見たものと同様のものを使用できます。画像部分を削除するだけです。
docker ps -q | xargs docker stop
5。コンテナを適切に停止します
正直なところ、dockerはデフォルトでコンテナーを正常に停止します。 docker stopコマンドを使用すると、コンテナを強制的に強制終了する10秒前にコンテナを停止します。
コンテナを停止するのに常に10秒かかるという意味ではありません。コンテナがいくつかのプロセスを実行している場合、プロセスを停止して終了するのに10秒かかるだけです。
Dockerstopコマンドは最初にSIGTERMコマンドを送信します。この期間にconainerが停止すると、SIGKILLコマンドが送信されます。プロセスはSIGTERMを無視する場合がありますが、SIGKILLはプロセスをすぐに強制終了します。
SIGTERMとSIGKILLの違いをご存知だと思います。
SIGTERMとは何ですか? SIGKILLとSIGTERMの違いは何ですか?SIGTERMとSIGKILLはどちらも、Linuxでプロセスを強制終了するために使用されます。ただし、SIGTERMの使用をお勧めします。これが理由です! LinuxハンドブックAbhishekPrakashこの10秒の猶予期間は、-tオプションを使用して変更できます。コンテナを停止する前に30秒待機するとします。
docker stop -t 30 container_name_or_id
最後に…
これだけの情報がトピックをうまくカバーしていると思います。 Dockerコンテナを停止することについてはたくさん知っています。
より多くのDockerのヒントとチュートリアルをお楽しみに。ご質問やご提案がございましたら、コメント欄でお知らせください。