Ответ
Да, Docker CLI предоставляет несколько флагов для тонкой настройки DNS-резолвинга для каждого контейнера. Это часто требуется в DevOps для работы в изолированных сетях, с внутренними DNS-серверами или для отладки.
Настройка при запуске контейнера (docker run):
--dns— указать custom DNS-серверы (можно несколько).docker run --dns 8.8.8.8 --dns 192.168.1.1 nginx--dns-search— добавить суффиксы домена для поиска (например, чтобыwebрезолвилось вweb.internal.company).docker run --dns-search "internal.company" --dns-search "svc.cluster.local" myapp--dns-opt— передать опции в/etc/resolv.confконтейнера.# Увеличиваем таймаут и количество попыток docker run --dns-opt "timeout:3" --dns-opt "attempts:2" nginx--hostname— задать hostname контейнера, который будет использоваться в DNS.
Глобальная настройка для Docker Daemon:
Если нужно, чтобы все новые контейнеры использовали определенные настройки по умолчанию, их задают в /etc/docker/daemon.json:
{
"dns": ["10.0.0.2", "8.8.8.8"],
"dns-search": ["internal.example.com"],
"dns-opts": ["timeout:2", "attempts:3"]
}
После изменения конфигурации требуется перезагрузка демона:
sudo systemctl reload docker # или restart docker
Практический пример для корпоративной среды:
# Контейнер использует внутренний DNS для резолва сервисов,
# а для внешних запросов — публичный DNS Google.
# Также настроен поиск по внутреннему домену.
docker run
--dns 10.10.10.10
--dns 8.8.8.8
--dns-search "prod.aws.company"
--dns-opt "ndots:2"
--name my-service
my-app-image
Важно: Настройки, заданные через docker run, имеют приоритет над глобальными настройками демона. В Docker Compose эти параметры задаются в секции dns, dns_search, dns_opts для сервиса.