我遇到了docker ps
无法返回并卡住的docker问题。
我发现doinng docker服务会重新启动类似
sudo service docker restart
(https://forums.docker.com/t/what-to-do-when-all-docker-commands-hang/28103/4)
但是我担心它是否会杀死所有正在运行的容器? (我猜该服务确实提供了服务,以便Docker容器可以运行?)
答案 0 :(得分:2)
在默认配置中,您的假设是正确的:If the docker daemon is stopped, all running containers are shut down.。但是,如链接上所述,可以通过添加
在docker>= 1.12
上更改此行为
{
"live-restore": true
}
到/etc/docker/daemon.json
。关键:必须重新启动守护程序,此更改才能生效。请注意实时重新加载的限制,例如仅支持补丁程序版本升级,不支持主要版本升级。
另一种可能性是define a restart policy when starting a container。为此,在通过--restart
启动容器时,将以下值之一作为命令行参数docker run
的值传递:
no Do not automatically restart the container. (the default)
on-failure Restart the container if it exits due to an error, which manifests
as a non-zero exit code.
always Always restart the container if it stops. If it is manually stopped,
it is restarted only when Docker daemon restarts or the container
itself is manually restarted.
(See the second bullet listed in restart policy details)
unless-stopped Similar to always, except that when the container is stopped
(manually or otherwise), it is not restarted even after Docker
daemon restarts.
对于您的具体情况,这意味着您可以:
--restart always
重新启动所有容器(有关更多信息,请参见下文)此重新启动将关闭,然后重新启动所有容器一次。但是从那时起,您应该可以在容器不终止的情况下自由停止docker守护程序。
如上所述,实时重新加载无法处理主要版本升级。对于主要版本升级,必须拆除所有正在运行的容器。但是,如果使用重启策略always
,则在升级后重启docker守护程序后,将重启容器。