docker – 撰写:链接选项不工作

我有一个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为所有图像文件创build容器。

请注意,我已经创build了所有的图像,所以当我运行docker-compose.yml文件时,这些图像将不会从服务器上拉出来。

所有的容器都运行成功,但问题原来是容器不能互相交互,因为我已经使用我的docker-compose.yml文件中的链接提供容器之间的通信。 但我认为链接选项不适合我。 卡克法是不能够与动物园pipe理员沟通(我使用链接链接动物园pipe理员和卡夫卡)。

总之,为什么链接选项不工作?

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

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

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

 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 

所以,也就是说,你可以指出从kafka zookeeper这样的:

 zookeeper:2181 

PS:如果只使用容器互连(如前所述),则不需要公开端口。 当你需要访问的时候公开端口,例如通过你的本地主机访问某个服务端口。

问题是你连接你的容器不当。 链接到另一个服务中的容器。 请指定服务名称和链接别名(SERVICE:ALIAS),或者仅指定服务名称。 请参阅docker撰写文档以获取更多信息。 更正了撰写文件。

 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 ...