Установка DNS-сервера в docker-контейнере

May 18, 2017 16:24 · 226 words · 2 minute read dns docker

Ранее мы уже рассматривали процесс настройки DNS-сервера с динамическим обновлением зон в операционной системе Ubuntu 16.04, однако этот вариант не самый оптимальный с точки зрения использования времени.

Давайте разберемся с очень простым и быстрым способом базовой установки DNS-сервера (bind9 + webmin) с помощью docker-контейнера!

Считаем, что docker уже установлен и корректно работает. Предлагаемый образ доступен на Docker Hub и скачать его можно с помощью команды:

docker pull sameersbn/bind:9.9.5-20170129

Альтернативный вариант — самостоятельная сборка образа из Dockerfile, присутствующего на github:

docker build -t sameersbn/bind github.com/sameersbn/docker-bind

Для запуска контейнера используется команда:

docker run --name bind -d --restart=always \
       --publish 53:53/tcp --publish 53:53/udp --publish 10000:10000/tcp \
       --volume /srv/docker/bind:/data \
       sameersbn/bind:9.9.5-20170129

При запуске контейнера также стартует сервис Webmin, который будет доступен в браузере по адресу http://localhost:10000. Для авторизации по умолчанию используется логин root и пароль password. Есть возможность самостоятельно задать пароль при старте контейнера, добавив параметр --env ROOT_PASSWORD=secretpassword.

Если же сервис Webmin не нужен, его также можно отключить при старте контейнера с помощью параметра --env WEBMIN_ENABLED=false.

Конфигурационные файлы DNS-сервера на хост-машине будут расположены в каталоге /srv/docker/bind. Пользователям SELinux необходимо также выполнить команду:

mkdir -p /srv/docker/bind

и

chcon -Rt svirt_sandbox_file_t /srv/docker/bind

Для обновления контейнера с DNS-сервером необходимо скачать новый образ:

docker pull sameersbn/bind:9.9.5-20170129

Остановить работающий docker-контейнер и удалить его:

docker rm -f bind

Запустить новый контейнер из свежего образа с нужными опциями:

docker run --name bind -d \
	[OPTIONS] \
	sameersbn/bind:9.9.5-20170129
tweet Share