`dockerContainerrm`と`dockercontainerkill`は実際に同じ効果を得ますか?

`dockerContainerrm`と`dockercontainerkill`は実際に同じ効果を得ますか?

マンページから:

docker container rm1 つ以上のコンテナがホストノードから削除されます。コンテナ名または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をプロセスに送信する必要がある場合は、この動作は悪いので修正する必要があります。)

関連情報