请帮我解决这个问题,
swarm 模式下的覆盖网络允许跨节点容器能够像在同一网络上一样看到彼此。
那正确吗?
所以如果我有以下设置:
- 两个相似节点 M(经理)和 W( worker )的群模式集群
- 两个容器CM和CW分别运行在节点M和W上
- CM
depends_on: - CM:target
- 两个容器都连接到覆盖网络 OVNET
我能从 CM ping target
吗?如果不是,为什么?
演示:
docker stack deploy -c test.yml 测试
其中test.yml
如下:
version: "3"
services:
CM:
image: alpine
command: sh -c 'ping CW'
depends_on:
- CW
networks:
- OVNET
deploy:
placement:
constraints:
- node.role == manager
CW:
image: alpine
command: sh -c 'ping localhost'
networks:
- OVNET
deploy:
placement:
constraints:
- node.role == worker
networks:
OVNET:
driver: overlay
提前致谢!
最佳答案
是的,它如您所料的那样工作。首先创建网络,然后根据其约束放置容器。我预计 CM 的第一个实例可能会失败,因为 CW 需要时间来拉取图像,但之后就可以正常工作了。同一覆盖网络上的容器可以通过内置 DNS 通过服务名称相互通信。
关于networking - 了解 docker 中的覆盖网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43304521/