我最初认为docker stop
相当于vagrant halt
,而docker rm
相当于vagrant destroy
。
但从根本上说,docker容器是无状态的,除了VOLUME
语句,如果没有docker rm
调用它,AFAIK即使在-v
之后也会保留目录内容。
那么,有什么区别?
答案 0 :(得分:38)
docker stop
保留docker ps -a
list中的容器(如果您想将其状态保存在新图像中,则可以提交容器)。
它首先发送SIGTERM,然后在宽限期后发送SIGKILL。
docker rm
将从docker ps -a
列表中删除容器,丢失其“状态”(在图像文件系统顶部写入的分层文件系统)。
它无法删除正在运行的容器(除非使用-f
调用,在这种情况下它会直接发送SIGKILL。)
在生命周期方面,您应该首先停止容器,然后将其删除。它为container PID 1 to collect zombie processes提供了机会。
答案 1 :(得分:3)
docker rm
从您的存储位置(例如 debian:/var/lib/docker/containers/)中删除容器映像,而
docker stop
只是停止容器。