Я использую CentOS 7 в качестве хоста docker daemon и centos: 6 изображений Docker.
Я хочу установить какое-то программное обеспечение, которое требует разрешимого имени хоста как не-loopback-адрес. Если я запустил изображение докера с параметром -h, например
docker run -i -t -h myhost centos:6 /bin/bash
Затем я могу установить программное обеспечение, потому что /etc/hosts в контейнере автоматически настроены как
[[email protected] /]# cat /etc/hosts
172.17.0.7 myhost
127.0.0.1 localhost
[[email protected] /]# 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 addr, как показано ниже:
$ 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-адрес?