单节点部署Docker环境,健康检查只是会给容器加个不健康的状态,并不会尝试重新创建容器。
如果你的docker在swarm模式下,他会尝试重新创建容器,可是单节点不行。
如果你想要能够容器在不健康情况下自动重启,又想使用单节点状态怎么办呢?
我写了个简单的脚本,他会监听docker的健康事件,然后将不健康的容器进行重启。
项目源码地址为:
https://github.com/caicaicai/autoheal
镜像我已经传到中央仓库了,你本地如果执行想部署,不需要二次开发的话,只需要部署一个简单的容器就行了。
docker run -d \
--name autoheal \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
xiaocaicai/autoheal
镜像仓库地址:https://hub.docker.com/r/xiaocaicai/autoheal
参考资料:https://codeblog.dotsandbrackets.com/docker-health-check/