docker-compose:链接选项不起作用

时间:2017-05-23 12:37:17

标签: docker docker-compose

我有一个docker-compose.yml文件:

zookeeper:
   image: zookeeper:3.4
   ports:
      - 2181:2181
kafka:
   image: ches/kafka:latest
   ports:
      - 9092:9092
   links: 
      - zookeeper:3.4
myDpm:
   image: dpm-image:latest
   ports:
      - 9000:9000
   links:
      - kafka:latest
mySql:
   image: mysql:latest
   environment:
      MYSQL_USERNAME: root
      MYSQL_ROOT_PASSWORD: root
myMc3:
   image: mc3-v3:3.0
   ports:
       - 9001:9000
   links:
       - mySql:latest 
   environment:
      runMode: dev
myElastic:
   image: elasticsearch:2.4.0
   ports:
       - 9200:9200

运行docker-compose up -d为所有图像文件创建容器。

  

请注意我已经为所有人创建了图像,因此当我运行docker-compose.yml文件时,这些图像将不会从服务器中提取。

所有容器都运行成功,但问题是容器无法互相交互,就像我在docker-compose.yml文件中使用链接来提供容器之间的通信一样。但我认为链接选项对我不起作用。 Kakfa无法与zookeeper通信(我使用链接链接zookeeper和kafka)。

简而言之,为什么链接选项不起作用?

或者我在某个地方出错了? 任何人请给我正确的方向。

  

注意:所有容器都是单独工作但不能相互通信

2 个答案:

答案 0 :(得分:0)

链接是服务名称,而不是图像名称:

zookeeper:
   image: zookeeper:3.4
   ports:
      - 2181:2181
kafka:
   image: ches/kafka:latest
   ports:
      - 9092:9092
   links:
      - zookeeper
myDpm:
   image: dpm-image:latest
   ports:
      - 9000:9000
   links:
      - kafka
mySql:
   image: mysql:latest
   environment:
      MYSQL_USERNAME: root
      MYSQL_ROOT_PASSWORD: root
myMc3:
   image: mc3-v3:3.0
   ports:
       - 9001:9000
   links:
       - mySql
   environment:
      runMode: dev
myElastic:
   image: elasticsearch:2.4.0
   ports:
       - 9200:9200

所以,即你可以从zookeeper指向kafka

zookeeper:2181

PS:如果您只使用容器间连接(例如之前的例子),则不需要公开端口。您需要访问时公开端口,即通过localhost公开某些服务端口。

答案 1 :(得分:0)

问题是您正在不正确地链接容器。链接到另一个服务中的容器。指定服务名称和链接别名(SERVICE:ALIAS),或仅指定服务名称。有关详细信息,请参阅docker compose documentation。更正了撰写文件。

zookeeper:
   image: zookeeper:3.4
   ports:
      - 2181:2181
kafka:
   image: ches/kafka:latest
   ports:
      - 9092:9092
   links: 
      - zookeeper
myDpm:
   image: dpm-image:latest
   ports:
      - 9000:9000
   links:
      - kafka
mySql:
   image: mysql:latest
   environment:
      MYSQL_USERNAME: root
      MYSQL_ROOT_PASSWORD: root
myMc3:
   image: mc3-v3:3.0
   ports:
       - 9001:9000
   links:
       - mySql
   environment:
      runMode: dev
myElastic:
   image: elasticsearch:2.4.0
   ports:
       - 9200:9200

您还可以使用别名指定链接:

...
myMc3:
   image: mc3-v3:3.0
   ports:
       - 9001:9000
   links:
       - mySql:mysqldb
   environment:
      runMode: dev
...