深入浅出 Docker Swarm | DaoCloud 现推出 Docker Swarm 系列技术文章,为大家深入浅出地解读 Docker Swarm 的概念、使用方法以及最真实的案例分析。全系列共五篇,本周为大家每日放送一篇精彩内容,敬请期待。
今天的 Swarm 文章,让我们分享 5 条 Swarm 高级用户使用 Swarm 的贴士。
每个 Docker Engine 都可以被分配一个或多个任意字符串的标签( label ),如 disk=ssd 。此后,你可以在你的 docker run 命令里包含相同的标签,作为标示来控制容器调度的位置。
可以按照以下示例,来了解如何使用标签:
在你的其中一个 Engine 上运行:
在另一个 Engine 上运行:
现在就这样运行你的容器:
在发布的 Swarm 1.1 版本中,新增了一项功能:如果因为某些原因,容器运行错误,你可以把它们重新调度到正常的节点上。这项功能目前还在试验阶段,不过你可以按照以下步骤试一试该新功能。
这样运行 Swarm 管理 :
每个容器都有一个 ID ,如果容器被重新调度, ID 也会随之更改。但每个容器也有一个 com.docker.swarm.id ,就算容器被重新调度到新的节点上,这一 ID 也不会更改。同样也适用于容器命名,你为容器指定的名字也不会在重新调度过程中更改。
案例如下:
Docker Engine 的 discovery heartbeat 是 overlay 网络模块使用的一个机制,用于确定集群中位于远程主机上的 Docker daemon 进程是否仍在工作。你可以用秒时来指定心跳的频率。默认心跳间隔是 20 秒,但更大的集群倾向于使用较长的间隔。
Overlay 网络取决于主机发现,而 Docker Engine 里的主机发现取决于 Key-value (KV) Store 。在一个拥有大量主机的环境里,越激烈的心跳间隔越会影响各种 KV Store 的表现。 为了减轻主机发现和事件监控对 KV Store 的压力,在 Swarm v 1.10 版本中增加了 daemon 配置标记。你可以根据你的扩展需求,对 value 进行微调。
如果你打算在同一个 overlay 网络下运行多个容器,你就需要足够多的 IP 地址。请在建立网络时使用 --subnet :
通过以上配置,网络会拥有 170 万个 IP 地址。
如果你想将其限制到 65000 个,就用 --subnet=20.0.0.0/16
注意:这里是以 20.0.0.0 subnet 为例。只要与你环境里的 IP 地址不冲突,你用什么都行。
下期预告: Swarm 在健康医疗领域的最佳实践