不使用docker-compose版本2的容器之间的链接

use*_*035 14 docker docker-compose

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

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

我有以下基本版本2 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

当我运行以下命令时:

docker-compose up -d

我看到启动了两个容器,但在/ etc/hosts文件中没有创建链接:

docker exec -it my-app1 cat /etc/hosts
    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'我可以使用'my-redis1'的IP地址ping另一个容器,但我不能'ping my-redis1'(基于名称).

这可能是什么问题?

附加信息:

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

Jes*_*oco 13

对于docker-compose的版本2,默认情况下,同一网络中的"服务"(容器)在它们之间链接.

使用下面的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
Run Code Online (Sandbox Code Playgroud)

你只可以执行ping my-app从您的my-redis容器ping my-redismy-app容器检查它们是否有联系.

例如:

$ docker-compose up -d
$ docker exec -it my-app1 bash
# ping my-redis
Run Code Online (Sandbox Code Playgroud)

你可以得到有关在下面的链接的详细信息: https://blog.docker.com/2016/02/compose-1-6/ https://github.com/docker/compose/blob/master/docs/ networking.md


use*_*035 5

问题是我的Fedora主机使用了firewalld。

在暂时禁用防火墙的情况下(“ systemctl stop firewalld”,然后是“ systemctl restart docker”),一切都会根据Docker文档工作。

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

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

-Arjen