Как именованный контейнер узнает 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 чтобы понять больше вы можете прочитать здесь

Другие вопросы по тегам