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