为什么第一个容器不能“看到”后来的容器

时间:2016-02-18 15:51:47

标签: apache-zookeeper docker-compose

我有一系列由docker-compose启动的容器。具体来说,它们是多个zookeeper容器:

zk1:
    image: seven10/zookeeper:3.4.6
    container_name: zk1
    hostname: zk1
    restart: always
    ports:
      - "2181:2181"
      - "2888:2888"
      - "3888:3888"
    environment:
      - ZOOKEEPER_ID=1
    net: ${MY_NETWORK_NAME}
    volumes:
      - /seven10/zk/zk1/data:/opt/zookeeper-3.4.6/data

  zk2:
    image: seven10/zookeeper:3.4.6
    container_name: zk2
    restart: always
    hostname: zk2
    ports:
      - "2182:2181"
      - "2889:2888"
      - "3889:3888"
    environment:
      - ZOOKEEPER_ID=2
    net: ${MY_NETWORK_NAME}
    volumes:
      - /seven10/zk/zk2/data:/opt/zookeeper-3.4.6/data

  zk3:
    image: seven10/zookeeper:3.4.6
    container_name: zk3
    hostname: zk3
    restart: always
    ports:
      - "2183:2181"
      - "2890:2888"
      - "3890:3888"
    environment:
      - ZOOKEEPER_ID=3
    net: ${MY_NETWORK_NAME}
    volumes:
      - /seven10/zk/zk3/data:/opt/zookeeper-3.4.6/data

所以当我开始启动容器时,zk1在开始时给我这个警告:

WARN  [WorkerSender[myid=1]:QuorumCnxManager@382] - Cannot open channel to 3 at 
      election address zk3:3888
java.net.UnknownHostException: zk3

但是几秒钟之后就没有关于zk3的任何其他内容了。 但是,zk1连续为zk2提供以下错误:

2016-02-18 15:28:57,384 [myid:1] - WARN  [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Learner@233] - Unexpected exception, tries=0, connecting to zk2:2888
java.net.UnknownHostException: zk2

zk2并没有对zk1说过任何关于zk1的内容,但是短暂地抱怨zk3的“无法打开频道”错误。 zk3并不是每次都提到zk1或zk2。

所以最大的问题是zk1无法找到zk2。它只是垃圾邮件并拒绝来自kafka的连接。为什么会这样,我该如何解决这个问题?

我的开发盒在ubuntu 14.04上使用docker版本1.9.1和docker-compose版本1.5.1(我认为Mint Rafello?),尽管目标环境是ubuntu 15.10。

1 个答案:

答案 0 :(得分:0)

您的主机系统是否知道如何将zk1 / 2/3链接到IP地址?如果您在同一节点上启动所有三个服务器,则应使用localhost作为主机名(服务器名称仍应是唯一的)