在多主机环境下,容器在Swarm模式下无法相互连接。

4
我正在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

Configuration

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

有什么想法,如何解决这个问题?

1
我可以知道为什么这个问题被投票负? - savage
你能再确认一下“mynet”网络的状态吗? - Vince Bowdren
1个回答

1

这是Docker Swarm模式中的一个错误,并且在即将发布的Docker v17.04.0版本中已经修复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接