我经常遇到一些 docker 容器应用程序的问题,简单的解决方法是重新启动 docker 容器。不幸的是,这是一个手动过程,我们已经破坏了功能,直到我们发现哪个容器有问题需要重新启动。这让我想知道是否有一种在某些情况下自动重启 docker 容器的好技术?
现在,我正在考虑将--autorestart标志与在遇到已知问题时强制关闭应用程序的组合。但是,我不确定这是否是最好的方法。
如果您的应用程序能够检测到问题,您可以轻松地让容器自行重启。两个重要的事情是--restart标志和应用程序在检测到问题时存在。
在后台启动容器 ( -d) 并设置重启策略:
docker run --restart unless-stopped -d [IMAGE] [COMMAND]
使用重启策略,您可以控制 Docker 在命令存在时执行的操作。Using--restart unless-stopped告诉 Docker 总是重新启动命令,无论命令的退出代码是什么。这样,您可以让您的应用程序检查其健康状况,并在必要时使用exit(1)或类似于关闭的东西。发生这种情况时,Docker 将遵循其重启策略并启动一个新容器。
尽管 Docker 并不真正关心返回码,但我会确保应用程序存在的状态码不是0用来指示问题的。如果您确实想分析日志或使用脚本中的容器,这在以后可能会很有用。
编辑:
我最初--restart always在答案中使用,但经过一些考虑,我认为--restart unless-stopped在这里使用可能会更好。它的行为更可预测,因为docker stop它实际上会停止服务。使用--restart always,docker stop将停止容器,然后再次启动一个新容器,这不一定是您想要或期望发生的。
| 归档时间: |
|
| 查看次数: |
3901 次 |
| 最近记录: |