docker - 停止容器时的不同行为(docker stop vs drain)
问题描述
我在使用 docker 时遇到了一种奇怪的行为。
docker service update --availability drain myHost
出于某种原因,当我在之前运行该服务的主机上使用时,服务需要两次尝试在不同的节点上启动。
当docker stop containerId
对服务执行相同操作时,将在第一次尝试时启动。
我不认为 docker 负责我们的服务需要多次尝试启动,但是当节点处于排水模式与 docker stop 时停止容器必须有不同的行为,我希望发现这种差异会指出我找到正确的方向来发现我们服务的问题。
为了更清楚我的工作,我将在这里提供一个简短的示例:
- 初始情况
节点 1(活动):
- 服务 1 正在运行
节点 2(活动):
- 服务 2 运行
docker service update --availability drain Node2
节点 1(活动):
- 服务 1 正在运行
- Service2 Running(两次尝试启动后)
节点 2(漏极):
docker service update --availability active Node2
节点 1(活动):
- 服务 1 正在运行
- Service2 Running(没有任何变化,因为没有发生重新平衡)
节点 2(活动):
(onNode1)$: docker stop serivce2
节点 1(活动):
- 服务 1 正在运行
节点 2(活动):
- Service2 正在运行(第一次尝试后)
通过添加约束来强制服务不在节点上运行时,行为是相同的。
- 初始情况
节点 1(活动):
- 服务 1 正在运行
节点 2(活动):
- 服务 2 运行
docker service update --constraint-add "node.hostname != Node2" Service2
节点 1(活动):
- 服务 1 正在运行
- Service2 Running(两次尝试启动后)
节点 2(漏极):
docker service update --constraint-rm "node.hostname != Node2" Service2
节点 1(活动):
- 服务 1 正在运行
- Service2 Running(没有任何变化,因为没有发生重新平衡)
节点 2(漏极):
docker service update --constraint-add "node.hostname != Node1" Service2
节点 1(活动):
- 服务 1 正在运行
节点 2(漏极):
- Service2 Running(两次尝试启动后)
我找不到任何差异记录,所以我希望 stackoverflow 上有人知道 docker 的不同之处。
解决方案
推荐阅读
- r - Constrained shuffling of rows based on columns
- c - 是否有用于圆形功能的 ARM Neon 指令?
- c++ - How to properly calling a signal when using epoll_pwait()?
- python - create one-hot encoding for multi-labels
- c# - 使用 LiveCharts 在折线图中绘制垂直线
- google-colaboratory - 如何在不使用本地PC转换的情况下将我在google colab中训练的tensorflow的protobuf训练模型转换为tensorflowjs?
- sql-server - 将参数和连接管理器从一个 SSIS 包复制到另一个
- wordpress - 删除我的主页上分配给图像的标题,而不删除图像本身
- amazon-web-services - Route53 解析器跨账户连接
- c - 什么时候最好在看门狗线程中导致段错误而不是正常退出以停止进程?