我正在使用CentOS 7作为Docker守护进程主机和centos:6 Docker映像。
我想安装一些需要可解析主机名的软件,作为非环回地址。如果我运行一个带有-h选项的Docker映像,例如:
docker run -i -t -h myhost centos:6 /bin/bash
那么我可以安装该软件,因为容器内的 /etc/hosts 已自动配置好,如下所示:
[root@myhost /]# cat /etc/hosts
172.17.0.7 myhost
127.0.0.1 localhost
[root@myhost /]# ping myhost
PING myhost (172.17.0.7) 56(84) bytes of data.
64 bytes from myhost (172.17.0.7): icmp_seq=1 ttl=64 time=0.033 ms
但是如果我从Dockerfile创建一个镜像,就不能使用同样的方法。我测试了以下Dockerfile来创建一个镜像:
FROM centos:6
ENV HOSTNAME myhost
RUN ping myhost
在 Docker 构建过程中,分配的主机名无法像以下动态 IP 地址一样解析:
$ docker build -t testimage .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM centos:6
---> a30bc9f3097e
Step 1 : ENV HOSTNAME myhost
---> Using cache
---> e73bf592389e
Step 2 : RUN ping myhost
---> Running in ca54c8eac073
ping: unknown host myhost
INFO[0000] The command [/bin/sh -c ping myhost] returned a non-zero code: 2
如何将特定的主机名解析为动态容器IP地址并使用?