Docker撰写无法正确设置容器链接
我最近开始使用Docker Compose,然后引入官方文档。 我做的第一个例子(见这里 )在docker-compose.yml中定义了两个容器,如果我理解了它们的话,默认情况下容器是链接的。 他们的.yml看起来和我的一样:
version: '2' services: web: build: . ports: - "5000:5000" volumes: - .:/code depends_on: - redis redis: image: redis
但是,使用docker exec来查看正在运行的Web容器,发现在/ etc / hosts中没有用于redis的DNS条目。 我也无法通过名称ping到redis容器,只能用于容器的IP地址。 这是我的/ 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 e886da2c2a78
我也检查了Github上的错误报告,但是我发现的build议到目前为止并不适用于我。 我可以排除任何防火墙问题的可能性,因为firewalld没有运行在我的主机上。
有任何想法吗?
我的设置:
- Docker版本1.11.1
- Docker撰写版本1.7.1
- 操作系统:Win7上Oracle VirtualBox上的Ubuntu 16.04
我在用着:
$ docker --version Docker version 1.11.1, build 5604cbe
如果我逐字使用你docker-compose.yml
文件,并且下面的Dockerfile
给Dockerfile
docker-compose
build:
…
FROM alpine RUN apk add --update darkhttpd CMD ["darkhttpd", "/var/www/localhost/htdocs"]
然后,我开始一切:
$ docker-compose up -d
然后inputWeb容器:
$ docker exec -it outofbounds_web_1 sh
然后ping redis
:
/ # ping -c 1 redis PING redis (172.20.0.2): 56 data bytes 64 bytes from 172.20.0.2: seq=0 ttl=64 time=0.166 ms --- redis ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.166/0.166/0.166 ms
这一切正常。
正如在注释中提到的那样,没有对/etc/hosts
修改,因为现在通过dns查找来处理名称parsing。