Где находится функциональный модуль разрешения имени контейнера?

#docker #networking

#docker #сеть

Вопрос:

Я создал мост с именем docker-br0 :

 [root@att ~]# docker network list
NETWORK ID          NAME                DRIVER              SCOPE
eb92c719d431        docker-br0          bridge              local
...
  

и теперь я запускаю два контейнера ubuntu01 и ubuntu02 прикреплен в docker-br0 :

 docker run -itd --name ubuntu01 --network docker-br0 ubuntu /bin/bash
docker run -itd --name ubuntu02 --network docker-br0 ubuntu /bin/bash
  

теперь в них они могут пинговать друг друга с помощью имени контейнера:

 root@d4b349ad46db:/# ping ubuntu01
PING ubuntu01 (172.18.0.2) 56(84) bytes of data.
64 bytes from ubuntu01.docker-br0 (172.18.0.2): icmp_seq=1 ttl=64 time=0.095 ms
64 bytes from ubuntu01.docker-br0 (172.18.0.2): icmp_seq=2 ttl=64 time=0.079 ms
  

и

 root@3a2769dd2576:/# ping ubuntu02
PING ubuntu02 (172.18.0.3) 56(84) bytes of data.
64 bytes from ubuntu02.docker-br0 (172.18.0.3): icmp_seq=1 ttl=64 time=0.135 ms
  

Мой вопрос в том, как специальный контейнер не может сопоставлять имя другого контейнера с IP-адресом?

в ubuntu02 (или utbun01 ) /etc/hosts файле он добавил только собственный IP-адрес.

 root@d4b349ad46db:/# more /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  d4b349ad46db
  

Итак, где находится разрешение имени контейнера — ip?

Комментарии:

1. Docker запускает внутреннюю службу DNS, которая используется контейнерами для разрешения имен других контейнеров. /etc/resolv.conf настроен так, чтобы указывать на эту службу DNS.

2. Спасибо, вы решили мой вопрос.