Как именованный контейнер узнает IP-адрес друг друга в сети, созданной пользователем в докере?
docker network create --driver bridge network1
docker run -itd --name docker1 --network network1 busybox
docker run -itd --name docker2 --network network1 busybox
docker exec -it docker1 /bin/bash
теперь в docker1, я могу пинговать docker2
/ # ping docker2
PING docker2 (172.19.0.3): 56 data bytes
64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.056 ms
Я думал, что эта запись добавлена в /etc/hosts, но это не так
/ # cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
172.19.0.2 841c0dc99115
откуда docker1 знает IP-адрес docker2?
1 ответ
Решение
Docker разрешает имена через внутренний DNS-сервер, который используется Docker-демоном, с помощью которого вы можете проверить адрес DNS-сервера. cat /etc/resolv.conf
чтобы понять больше вы можете прочитать здесь