Docker совет №16: Использование флага --add-host
Mar 8, 2018 09:05 · 243 words · 2 minute read
В данной статье рассмотрим один из весьма полезных флагов, - --add-host
, который можно использовать при запуске docker-контейнеров с помощью команды docker run
.
С помощью данного флага мы можем легко изменить сопоставление DNS-имя сервиса определенному ip-адресу внутри контейнера. Параметр --add-host
может быть полезен, например, когда нужно подключить службу внутри контейнера к внешнему хосту.
В официальной документации об этом флаге есть краткая, но вполне достаточная информация:
The --add-host
flag can be used to add additional lines to /etc/hosts
Проверим с помощью контейнера appropriate/curl (это маленький, alpine-based образ с установленной утилитой curl
) доступность сервиса (назовем его test.example.com):
docker run --rm appropriate/curl -sSI test.example.com
curl: (6) Could not resolve host: test.example.com
Все честно - из контейнера не резолвится DNS-имя test.example.com, о чем curl
нам и сообщил.
Воспользуемся флагом --add-host
:
docker run --rm --add-host=test.example.com:10.0.0.1 appropriate/curl -sSI test.example.com
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Fri, 23 Feb 2018 13:52:47 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://test.example.com/
Примечание. Конечно же, чтобы получить такой результат, сервис test.example.com должен быть запущен. Если нет желания поднимать отдельный web-сервис только для проверки работы флага --add-host
, можно для тестирования использовать ping
, а не curl
.
Еще один способ проверить, что пара ip-адрес и DNS-имя добавлена, проверить содержимое файла /etc/hosts
внутри docker-контейнера:
docker run --rm --add-host=test.example.com:10.0.0.1 appropriate/curl cat /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
10.0.0.1 test.example.com
172.17.0.5 56837f12305b
При работе с утилитой docker-compose
и *.yaml
-файлами, аналогом ключа --add-host
будет конструкция:
...
extra_hosts:
- "test.example.com:10.0.0.1"
...