我已经通过在Docker文件中添加HEALTHCHECK命令实现了Docker本机运行状况检查,如下所示,
HEALTHCHECK --interval=60s --timeout=15s --retries=3 CMD ["/svc/app/healthcheck/healthCheck.sh"]
设置容器的入口点
CMD [".././run.sh"]
执行如下所示的docker run命令,
docker run -d --net=host --pid=host --publish-all=true -p 7000:7000/udp applicationname:temp
healthCheck.sh从1退出,当我的应用程序未启动,并且我可以看到容器状态为不正常,但是它没有重新启动时。
STATUS
Up 45 minutes (unhealthy)
以下是docker和操作系统的详细信息:
[root@localhost log]# docker -v
Docker version 18.09.7, build 2d0083d
操作系统版本
NAME="CentOS Linux"
VERSION="7 (Core)"
如何在容器不正常时自动重启?
答案 0 :(得分:2)
Docker仅报告运行状况检查的状态。对运行状况检查结果采取行动需要在Docker之上运行一个额外的层。 Swarm模式提供了此功能,并且随Docker引擎一起提供。要启用:
docker swarm init
然后,您可以使用docker run
或docker service
命令声明目标状态,而不用docker stack
管理单个容器,而swarm模式将管理这些容器以实现目标状态。
docker service create -d --net=host applicationname:temp
请注意,主机网络端口和发布端口不兼容(它们在一起没有逻辑意义),net需要两个破折号作为有效标志,并且在群集模式下不支持更改pid名称空间。许多其他功能应类似于docker run
。
https://docs.docker.com/engine/reference/commandline/service_create/
答案 1 :(得分:1)