Cómo configurar el servidor DNS con Docker Container

Se usa un Dockerfile para crear una imagen de contenedor de Docker, que se usará para crear el servidor DNS. Una manera fácil de configurar un servidor DNS básico con Docker es usar el servidor DNS BIND junto con la interfaz de Webmin. En este tutorial, cubriremos cómo implementar un servidor DNS usando un contenedor docker.
BIND es un software de código abierto que implementa los protocolos del Sistema de nombres de dominio (DNS) para Internet. Es una implementación de referencia de estos protocolos, pero también es un software de producción, adecuado para su uso en aplicaciones de alto volumen y alta confiabilidad.
Las compilaciones automáticas de imágenes están disponibles en Dockerhub y es el método de instalación recomendado
docker pull sameersbn/bind:9.9.5-20170129
Alternativamente, puede construir la imagen usted mismo.
docker build -t sameersbn/bind github.com/sameersbn/docker-bind
Para iniciar un servidor BIND DNS, ejecute:
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
Como alternativa, puede usar el archivo docker-compose.yml de muestra para iniciar el contenedor usando Docker Compose.
Cuando se inicia el contenedor, también se inicia el servicio Webmin y se puede acceder a él desde el navegador web en http://localhost:10000. Inicie sesión en Webmin con el nombre de usuario y la contraseña raíz. Especifique –env ROOT_PASSWORD=secretpassword en el comando de ejecución de la ventana acoplable para establecer una contraseña de su elección.
El lanzamiento de Webmin se puede deshabilitar agregando –env WEBMIN_ENABLED=false al comando de ejecución de la ventana acoplable. Tenga en cuenta que el parámetro ROOT_PASSWORD no tiene efecto cuando el inicio de Webmin está deshabilitado.
Pruebas de servidor DNS
Puede personalizar el comando para iniciar el servidor BIND especificando argumentos a named en el comando docker run. Por ejemplo, el siguiente comando imprime el menú de ayuda del comando mencionado:
docker run --name bind -it --rm
--publish 53:53/tcp --publish 53:53/udp --publish 10000:10000/tcp
--volume /srv/docker/bind:/data
sameersbn/bind:9.9.5-20170129 -h
Para que BIND conserve su estado durante los apagados y arranques del contenedor, debe montar un volumen en /data.
Los usuarios de SELinux deben actualizar el contexto de seguridad del punto de montaje del host para que funcione bien con Docker:
mkdir -p /srv/docker/bind
chcon -Rt svirt_sandbox_file_t /srv/docker/bind
Implementación y mantenimiento
Para actualizar la imagen de BIND DNS Docker
Descargue la imagen de Docker actualizada:
docker pull sameersbn/bind:9.9.5-20170129
Detenga la imagen que se está ejecutando actualmente:
docker stop bind
Retire el contenedor detenido
docker rm -v bind
Ejecutar la imagen actualizada
docker run -name bind -d [OPTIONS] sameersbn/bind:9.9.5-20170129
Abra su navegador web en https://172.17.42.1:10000 e inicie sesión en webmin como usuario raíz y contraseña SecretPassword. Esto le dará la posibilidad de configurar su servidor DNS utilizando la interfaz de usuario de Webmin.
Conclusión
Para fines de depuración y mantenimiento, es posible que desee acceder al shell del contenedor. Si está utilizando Docker versión 1.3.0 o posterior, puede acceder a un shell de contenedor en ejecución iniciando bash usando docker exec:
docker exec -it bind bash
Ejecuta el servidor Docker DNS.