在版本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,构建d99cad6
> Linux内核:4.3.5-300.fc23.x86_64
最佳答案
使用版本2的docker – 组合在同一网络中的“服务”(容器)默认情况下它们之间链接.
使用下面的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容器中ping我的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