首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查码头容器是否重新启动并可访问?

如何检查码头容器是否重新启动并可访问?
EN

Stack Overflow用户
提问于 2015-01-21 19:09:21
回答 2查看 1.7K关注 0票数 0

我有一个码头集装箱和码头的CMD指令。在“码头重新启动”,立即开始,我不能进入码头约9-10秒。之后,码头集装箱或码头服务再次启动,我可以访问它。

问题是:是否有一种标准的方法来检查码头集装箱是否真的打开了?

当然,我可以用对我的服务的测试请求做一个循环,等待200个响应代码。但也许还有更好的解决方案?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-21 20:56:45

Sergey,您需要使用初始化系统作为在码头进程的监督者.您可以使用发行版内置的init系统,如systemd/upstart或init.d取决于您的操作系统来检查容器状态。

理论上,您应该在您的init系统中没有-d选项的情况下在init系统中创建独立的服务,因为-d选项停靠器分离了一个容器,并将0退出状态返回给init系统。因此,init系统失去了对目标进程的控制。

例如,在Systemd中实现这一机制:

  1. something.service中创建/etc/systemd/system文件

然后键入类似这样的内容:

代码语言:javascript
运行
复制
[Unit]
Description=Simple Blog Rails Docker Container Service
After=docker.service
Requires=docker.service

[Service]
Restart=on-failure
ExecStartPre=-/usr/bin/docker kill simple-blog-rails-container
ExecStartPre=-/usr/bin/docker rm simple-blog-rails-container
ExecStart=/usr/bin/docker run simple-blog-rails
ExecStop=/usr/bin/docker stop simple-blog-rails-container

[Install]
WantedBy=multi-user.target
  1. 重新加载系统配置systemctl daemon-reload
  2. 只需尝试通过键入systemctl start something.servicerestart来运行容器,而不是开始。
  3. 您可以检查服务状态systemctl status something.service

有关使用systemd和docker的更多信息,请阅读以下CoreOS手册:https://coreos.com/docs/launching-containers/launching/getting-started-with-systemd/

票数 3
EN

Stack Overflow用户

发布于 2015-01-23 01:41:52

请记住,docker restart默认为10秒的等待时间:

重新启动使用:码头重新启动选项容器容器..。 重新启动正在运行的容器 -t,-time=10秒,在杀死容器之前尝试停下来。一旦被杀,它就会重新启动。默认为10秒。

当我在一个码头容器中使用一些长时间运行的脚本时,它需要10秒才能完成。如果我更改命令行以使用不同的超时(如-t=4} ),它将在4秒内返回。

如果要确定容器是否正在运行(即使包含在其中的服务尚未完全就绪),则可以:

  1. 运行docker ps -这将给出所有正在运行的码头容器的列表。
  2. 使用Docker命令GET /containers/json -这将为您提供一个包含正在运行的容器列表的json响应。

v1.16/

https://docs.docker.com/reference/commandline/cli/#ps

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

https://stackoverflow.com/questions/28074923

复制
相关文章

相似问题

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