マンページから:
docker container rm
1 つ以上のコンテナがホストノードから削除されます。コンテナ名またはIDを使用できます。画像は削除されません。
docker container kill
: 指定された各コンテナ内の基本プロセスは、SIGKILL または --signal オプションで指定されたシグナルを送信します。
コンテナは実行中のイメージインスタンスですか?それでは、コンテナがもう存在しないという同じ目標をdocker container rm
効果的に達成することができますか?docker container kill
それらの違いは何ですか?
「コンテナ内部の主なプロセス」とは何ですか?
コンテナはホストシステムのプロセスとまったく同じように実行されますか?
ありがとうございます。
答え1
コンテナを運営する場合...
例えば
docker run alpine echo hello
すると、きれいに見えますが…
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
しかし、そうではなく、まだ存在します。
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3a4772c0f165 alpine "echo hello" 22 seconds ago Exited (0) 20 seconds ago relaxed_ramanujan
rm
これは次のコマンドでクリーンアップできます。
% docker container rm 3a4772c0f165
3a4772c0f165
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
だから:
docker kill
コンテナを殺します。docker rm
終了したコンテナは清掃されます。
それらは互いに異なります。
注:コンテナを自動的に清掃するように指示できます。
% docker run --rm alpine echo hello
hello
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
これで手動で行う必要はありませんrm
。
答え2
コンテナは(少なくとも):
- 実行中のプロセス
- ファイルシステムの最上位の一時階層です。
- ボリュームとネットワークマッピング。
Killは最初のものだけを扱います。
オプションを使用して実行する場合--rm
。その後、コンテナを停止または終了すると、コンテナも削除されます。
SIGTERMを送信するために(必要でない限り)killを使用しないでくださいdocker stop
。 (SIGKILLをプロセスに送信する必要がある場合は、この動作は悪いので修正する必要があります。)