`dockerContainerrm`和`dockercontainerkill`是否有效地实现了相同的效果?

`dockerContainerrm`和`dockercontainerkill`是否有效地实现了相同的效果?

来自联机帮助页:

docker container rm将从主机节点删除一个或多个容器。可以使用容器名称或 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选项运行。然后停止或杀死容器也会将其删除。

您不应该使用kill(除非必须),docker stop发送SIGTERM。 (如果您必须向进程发送 SIGKILL,则这种行为很糟糕,需要修复。)

相关内容