Docker Compose 链接的容器可能无法创建 hosts
越是好玩的东西,越能轻而易举的发现BUG,在此之前你可能没曾想到,这么高端大气上档次的东西会有这么明显的BUG,然后检查自己的缘故。我使劲的折腾啊折腾,终于发现问题原来如此简单,使用Docker Compose编排容器(Container)的时候,发现不能在/etc/hosts
自动创建容器间的链接。
测试过版本:v1.15.0、v1.8.0。在GitHub的Issues上发现类似问题(链接)。
正如去年玩VestaCP的时候,就发现几个BUG,可把我给折腾好几个小时的。
值得注意的是,似乎并不是所有的docker-compose.yml会出现这个问题。
例如下面这个docker-compose.yml
:
version: "2"
services:
my-wpdb:
image: mariadb
volumes:
- ./db-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ChangeMeIfYouWant
my-wp:
image: wordpress
volumes:
- ./web:/var/www/html
ports:
- "8080:80"
links:
- my-wpdb:mysql
environment:
WORDPRESS_DB_PASSWORD: ChangeMeIfYouWant
至少使用起来是没什么问题的。
但是当我使用命令docker exec wordpress_my-wp_1 cat /etc/hosts
查看hosts
文件的时候,缺发现少了些个东西啊!
链接没有被创建?
问题似乎更奇葩了。
得,进入该容器看看:
root@vultr:~/wordpress# docker exec -it wordpress_my-wp_1 /bin/bash
root@f63de8fd91d9:/var/www/html# ping mysql
PING mysql (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.115 ms
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.117 ms
64 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.083 ms
64 bytes from 172.18.0.2: icmp_seq=3 ttl=64 time=0.092 ms
^C--- mysql ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.083/0.102/0.117/0.000 ms
root@f63de8fd91d9:/var/www/html#
奇怪了,为啥在/etc/hosts
中看不到172.18.0.2 mysql
?
脑子有点不够用,算了,回头再折腾。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。