强制有问题的docker容器重新启动?
我经常遇到一些我们的docker容器应用程序的问题,简单的修复是重新启动docker容器。 不幸的是,这是一个手动过程,我们已经打破了function,直到我们发现哪个容器有问题,需要重新启动。 这有我想知道是否有一个很好的技术,在某些情况下自动重启docker集装箱?
现在我想到了--autorestart
标志的组合,并在遇到已知问题时强制应用程序closures。 但是,我不确定这是否是最好的方法。
如果你的应用程序能够检测到问题,你可以很容易地重新启动容器。 两个重要的事情是--restart
标志,并且在检测到问题时应用程序存在。
在后台启动容器( -d
)并设置重启策略 :
docker run --restart unless-stopped -d [IMAGE] [COMMAND]
使用重新启动策略,您可以控制Docker在命令存在时执行的操作。 使用--restart unless-stopped
可以让Docker始终重新启动该命令,而不pipe该命令的退出代码是什么。 这样,您可以让您的应用程序检查其健康状况,并在必要时使用exit(1)
或类似的关机。 当发生这种情况时,Docker将遵循其重新启动策略并启动一个新的容器。
尽pipeDocker并不关心返回代码,但我会确保应用程序存在的状态码不是0
来表示问题。 如果您想要分析日志或使用脚本中的容器,以后这可能会很有用。
编辑:
我最初使用--restart always
在答案,但经过一些考虑,我认为可能会更好使用--restart unless-stopped
在这里。 它的行为是更可预测的,因为docker stop
确实停止服务。 使用--restart always
, --restart always
docker stop
将停止容器,但是再次启动一个新的容器,这不一定是你想要或预期发生的。
您可以使用下一个命令重新启动容器:
docker restart $container
- Kubernetes Pods和Docker Compose(s)(Composures?)有什么不同?
- 我如何链接一个容器组与一个容器?
- 在Caliconetworking的Docker容器中使用ping检查容器连接
- 无法启动/停止/重新启动泊坞窗容器内的服务
- 如何将我的容器组(可伸缩容器)连接到Bluemix上的MongoDB容器(单节点)?
- kubernetes和GKE有什么区别?
- testingDscConfiguration对容器
- docker for windows是否支持/ proc和cgroup映射?
- Docker节点状态在重新启动之后从“就绪”变为“closures”,或者甚至在Mac睡眠时,我再次login