首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不健康的码头集装箱未通过码头本机健康检查重新启动

不健康的码头集装箱未通过码头本机健康检查重新启动
EN

Stack Overflow用户
提问于 2019-08-17 09:54:42
回答 2查看 7.4K关注 0票数 5

我通过在docker文件中添加health check命令实现了Docker本机健康检查,如下所示,

代码语言:javascript
复制
HEALTHCHECK --interval=60s --timeout=15s --retries=3 CMD ["/svc/app/healthcheck/healthCheck.sh"]

设置容器的入口点

代码语言:javascript
复制
CMD [".././run.sh"] 

执行停靠器运行命令,如下所示,

代码语言:javascript
复制
docker run -d  --net=host --pid=host --publish-all=true -p 7000:7000/udp applicationname:temp

当我的应用程序没有启动,并且我可以看到容器状态不健康时,healthCheck.sh将退出1,但它不会重新启动。

代码语言:javascript
复制
STATUS

Up 45 minutes (unhealthy)

下面是码头和操作系统的详细信息:

代码语言:javascript
复制
[root@localhost log]# docker -v
Docker version 18.09.7, build 2d0083d

OS版本

代码语言:javascript
复制
NAME="CentOS Linux"
VERSION="7 (Core)"

当容器变得不健康时,如何自动重新启动它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-17 10:40:07

Docker只报告健康检查的状态。根据健康检查的结果,需要在码头上额外运行一层。S批模式提供了此功能,并随码头引擎一起提供。使:

代码语言:javascript
复制
docker swarm init

然后,不再使用docker run管理单个容器,而是使用docker servicedocker stack命令声明目标状态,而群集模式将管理容器以实现目标状态。

代码语言:javascript
复制
docker service create -d  --net=host applicationname:temp

请注意,主机网络和发布端口是不兼容的(它们在逻辑上没有任何意义),net需要两个破折号才能成为一个有效的标志,并且在群集模式中不支持更改pid命名空间。许多其他特性应该与docker run类似。

创建/

票数 3
EN

Stack Overflow用户

发布于 2019-08-17 10:09:30

目前还没有针对不健康容器的自动重新启动机制,请参阅,但是您可以像前面提到的这里那样解决这个问题。

代码语言:javascript
复制
docker run -d \
    --name autoheal \
    --restart=always \
    -e AUTOHEAL_CONTAINER_LABEL=all \
    -v /var/run/docker.sock:/var/run/docker.sock \
    willfarrell/autoheal

它向监视器容器中添加docker域套接字,然后它可以监视所有不健康的容器,并在其他容器不健康的情况下重新启动它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57535192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档