- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个运行一个提供微服务的小型TCP服务器的Docker容器。
容器化过程开始后,该过程需要几毫秒的时间才能开始侦听其端口。如果在此之前尝试连接,则任何客户端的连接都将被connection refused
终止。
忙于等待容器状态更改为running
并不能阻止这种情况,因为在启动该过程之后需要一段时间才能启动服务。
容器过程向主机指示其已真正准备就绪的良好/常规方式是什么?
最佳答案
轮询服务是常规方法。不用理会Docker在说什么;尝试建立连接,如果遇到连接被拒绝的错误,请重试,直到连接成功或等待时间过长。
大多数容器只有在实际准备接受流量时才真正开始侦听其TCP端口。客户通常通过轮询套接字来解决此问题,通常使用诸如wait-for-it之类的专用工具。一个非常合理的替代方法是让客户端尝试在初次启动时进行连接,如果该连接失败,则崩溃,然后让协调器重新启动Pod(即使只有 docker run --restart on-failure
足以使其正常工作)。
由于容器与主机系统是隔离的,因此容器没有一条可以宣传“我准备好了!”的路径。例如,如果一个容器创建了一个文件来宣告准备就绪,那么它将需要与主机系统进行一些共享存储才能创建该文件,而协调器(例如Docker Compose)则需要意识到这一点。这不是任何通常的协调器的标准部分。
轮询方法的另一个重要方面是问题和解决方案都不是特定于Docker的。如果您仅在不涉及Docker的Ubuntu主机上运行service mysql start
,它仍然需要一分钟左右的时间,并且相同的轮询方法将起作用。如果数据库位于其他主机或云提供商的某个位置,则您没有共享的文件系统,但是您可以再次对其进行轮询,直到数据库就绪为止。诸如Consul之类的工具可以基于轮询已知服务来构建服务目录。 @DavidSzalai's answer提到了Kubernetes运行状况检查,它再次具有类似的方法(“尝试连接或崩溃”绝对是管理Kubernetes托管客户端的常规方法)。
关于docker - docker 容器如何可靠地表明它们不仅在运行,而且已经准备就绪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58701168/
是否有一种标准方法可以表明 R 包是专有的,归公司所有,不应在公司外部共享?现在,我在 DESCRIPTION 中使用它文件: License: Proprietary, ownership of X
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个方法可以根据 3 个正则表达式验证字段并根据失败的表达式返回错误。 function mfpValidateValue() { var pCtrl = window.document.
这个问题已经有答案了: Order of from and to values in SQL Between (3 个回答) 已关闭 4 年前。 我正在尝试从 leads 获取上周的数据表但是当我使用
我正在编写一个 pygame 代码来制作汽车游戏。这是一款基本的汽车游戏,英雄 Sprite 汽车应该避免与敌方 Sprite 接触。因此,对于碰撞部分,我们必须为敌车和英雄车创建一个 mask 。
我有一个情况,当满足某些条件时,该集团根本不产生任何状态(忽略所有事件)。当向bloc添加新事件时,如何测试没有状态产生? 我正在使用 flutter_bloc:^ 3.1.0 和 bloc_test
当我运行包含NAudio库的程序时,出现以下错误,“由于其保护级别而无法访问”。 public void ReadWaveHeader(Stream stream) { this.dataCh
Closed. This question needs details or clarity。它当前不接受答案。 想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。 9
如果我运行以下命令: from dateutil import parser parser.parse("Wind10_463@Y2014_M11_D19", fuzzy=True) 我明白了: da
我正在尝试解决第 6 章 - 点定位的“计算几何算法和应用,第 3 版 - de berg 等人”一书的一些练习。不幸的是,我不知道如何解决以下练习: Given a convex polygon P
我是一名优秀的程序员,十分优秀!