“docker stop”和“docker rm”有什么区别?
我最初以为docker stop
等于是vagrant halt
,而docker rm
是为了vagrant destroy
。
但从根本上说,docker容器是无状态的, VOLUME
语句除外,即使在docker rm
,如果没有用-v
调用它,AFAIK也会保留目录内容。
那么区别是什么呢?
docker stop
保留docker ps -a
列表中的容器(如果要将其状态保存在新映像中,则提供机会提交该容器)。
它首先发送SIGTERM,然后在宽限期之后SIGKILL。
docker rm
会从docker ps -a
列表中删除容器,从而失去其“状态”(写在图像文件系统之上的分层文件系统)。
它不能删除正在运行的容器(除非使用-f
调用,在这种情况下它直接发送SIGKILL)。
就生命周期而言,您应该先停止容器,然后将其取出。 它给了容器PID 1收集僵尸进程的机会 。