来自联机帮助页:
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,则这种行为很糟糕,需要修复。)