容器之间的链接不能与docker-compose版本2一起工作

版本2 docker-compose文件中的容器之间的链接不起作用。

只有在使用“旧” 版本1格式时,才会看到容器的/ etc / hosts中的链接。

我有以下基本版本2 docker-compose.yml文件。

版本:'2'

服务:
  我的应用程序内:
    图片:tomcat:8.0
     container_name:my-app1
    链接:
       - 我的redis
  我-Redis的:
     image:redis
     container_name:my-redis1

当我运行以下命令:

 docker工人 - 组成up -d 

我看到两个容器已启动,但是在/ etc / hosts文件中没有创build链接

 docker执行官 - 我的 -  app1的猫/ etc /主机 
     127.0.0.1 localhost
     :: 1 localhost ip6-localhost ip6-loopback
     fe00 :: 0 ip6-localnet
     ff00 :: 0 ip6-mcastprefix
     ff02 :: 1 ip6-allnodes
     ff02 :: 2 ip6-allrouters
     172.18.0.3 2abb84ccada9

从“my-app1”中,我可以使用IP地址“my-redis1”来ping另一个容器,但是我不能'ping my-redis1'(根据名字)。

这里可能是什么问题?

附加信息:

  • Docker版本1.10.0,版本590d5108
  • docker-compose 1.6.0版,build d99cad6
  • Linux内核:4.3.5-300.fc23.x86_64

在Docker的版本2中,默认情况下,在同一networking中的“服务”(容器)之间是链接的。

使用下面的docker-compose.yml文件

 version: '2' services: my-app: image: tomcat:8.0 container_name: my-app1 links: - my-redis my-redis: image: redis container_name: my-redis1 

您只需从my-redis容器中执行ping my-app ,然后从my-app容器中ping my-redis ,以检查它们是否已链接。

例如:

 $ docker-compose up -d $ docker exec -it my-app1 bash # ping my-redis 

您可以通过以下链接获取更多相关信息: https : //blog.docker.com/2016/02/compose-1-6/ https://github.com/docker/compose/blob/master/docs/ networking.md

问题是我的Fedora主机的防火墙。

在防火墙暂时禁用的情况下('systemctl stop firewalld',紧接着'systemctl restart docker'),一切都按照docker文档工作。

与docker一起使用时,firewalld似乎存在一个主要问题,请参阅: https : //github.com/docker/docker/issues/16137 。

请注意,RHEL / Centos 7也使用firewalld。

-Arjen