多主机环境下 swarm 模式下容器无法相互连接
Containers can't connect to each other in swarm mode in multi-host environment
我是 运行 DigitalOcean 上的 3 个节点(1GB,带专用网络),部署此堆栈后,容器无法使用主机别名连接到其他容器。
这是我的 docker-compose.yml
文件:
version: "3"
services:
mongo:
image: mongo
ports:
- 27017:27017
networks:
mynet:
aliases:
- mongo
deploy:
placement:
constraints: [node.role == manager]
redis:
image: redis
ports:
- 6379:6379
networks:
mynet:
aliases:
- redis
deploy:
placement:
constraints: [node.role == worker]
app:
image: node
ports:
- 3030:3030
networks:
- mynet
depends_on:
- redis
- mongo
deploy:
mode: replicated
replicas: 2
placement:
constraints: [node.role == worker]
networks:
mynet:
问题
root@mongo-container:/# ping mongo # works
root@mongo-container:/# ping redis # doesn't work
root@redis-container:/# ping redis # works
root@redis-container:/# ping mongo # doesn't work
root@app-container:/# ping mongo # doesn't work
root@app-container:/# ping redis # doesn't work
配置
daemon.json
{ "userland-proxy": false }
docker version
:
Client:
Version: 1.13.1
API version: 1.26
Go version: go1.7.5
Git commit: 092cba3
Built: Wed Feb 8 06:50:14 2017
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Go version: go1.7.5
Git commit: 092cba3
Built: Wed Feb 8 06:50:14 2017
OS/Arch: linux/amd64
Experimental: true
知道如何解决这个问题吗?
我是 运行 DigitalOcean 上的 3 个节点(1GB,带专用网络),部署此堆栈后,容器无法使用主机别名连接到其他容器。
这是我的 docker-compose.yml
文件:
version: "3"
services:
mongo:
image: mongo
ports:
- 27017:27017
networks:
mynet:
aliases:
- mongo
deploy:
placement:
constraints: [node.role == manager]
redis:
image: redis
ports:
- 6379:6379
networks:
mynet:
aliases:
- redis
deploy:
placement:
constraints: [node.role == worker]
app:
image: node
ports:
- 3030:3030
networks:
- mynet
depends_on:
- redis
- mongo
deploy:
mode: replicated
replicas: 2
placement:
constraints: [node.role == worker]
networks:
mynet:
问题
root@mongo-container:/# ping mongo # works
root@mongo-container:/# ping redis # doesn't work
root@redis-container:/# ping redis # works
root@redis-container:/# ping mongo # doesn't work
root@app-container:/# ping mongo # doesn't work
root@app-container:/# ping redis # doesn't work
配置
daemon.json
{ "userland-proxy": false }
docker version
:
Client:
Version: 1.13.1
API version: 1.26
Go version: go1.7.5
Git commit: 092cba3
Built: Wed Feb 8 06:50:14 2017
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Go version: go1.7.5
Git commit: 092cba3
Built: Wed Feb 8 06:50:14 2017
OS/Arch: linux/amd64
Experimental: true
知道如何解决这个问题吗?