Вариант A: запустить контейнер прокси-сервера DNS
Вот проект DNS proxy server
, который может это сделать: https://github.com/mageddo/dns-proxy-server
Сначала вам нужно запустить прокси-сервер DNS:
docker run --rm --hostname dns.mageddo -v /var/run/docker.sock:/var/run/docker.sock -v /etc/resolv.conf:/etc/resolv.conf defreitas/dns-proxy-server
Затем запустите фиктивный контейнер и назначьте ему --hostname
для целей тестирования:
docker run -d --hostname=this-can-be-resolved-from-host nginx
Наконец, попробуйте разрешить / ping / curl имя, которое вы назначили контейнеру nginx на предыдущем шаге, с вашего хост-компьютера:
neo@neo-desktop:~$ nslookup this-can-be-resolved-from-host
Server: 172.17.0.4
Address: 172.17.0.4#53
Non-authoritative answer:
Name: this-can-be-resolved-from-host
Address: 172.17.0.3
Name: this-can-be-resolved-from-host
Address: 172.17.0.3
neo@neo-desktop:~$ ping this-can-be-resolved-from-host
PING this-can-be-resolved-from-host (172.17.0.3) 56(84) bytes of data.
64 bytes from 172.17.0.3 (172.17.0.3): icmp_seq=1 ttl=64 time=0.032 ms
neo@neo-desktop:~$ curl this-can-be-resolved-from-host
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
[...]
Вариант Б. Запустите инжектор, который добавляет имена контейнеров непосредственно в файл hosts
на хосте docker: (решение найдено OP @ Tokyo Developer )
Вот простой инструмент для внедрения файлов «etc / hosts»: https://github.com/dvddarias/docker-hoster
Запустите контейнер инжектора:
docker run -d \
-v /var/run/docker.sock:/tmp/docker.sock \
-v /etc/hosts:/tmp/hosts \
dvdarias/docker-hoster
Запустите фиктивный контейнер и назначьте ему --hostname
для целей тестирования:
docker run -d --hostname=this-can-be-resolved-from-host nginx
Попробуйте разрешить hostname
AND container name
, назначенный контейнеру nginx на предыдущем шаге, с вашего хост-компьютера:
nslookup this-can-be-resolved-from-host
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: this-can-be-resolved-from-host
Address: 172.17.0.3
nslookup keen_lamarr
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: keen_lamarr
Address: 172.17.0.3