Cómo definir DNS en contenedores Docker: Guía paso a paso
Cuando implementas un contenedor en tu red, si no puede encontrar un servidor DNS definido en /etc/resolv.conf, por defecto tomará el DNS configurado para la máquina anfitrión. Eso puede estar bien para ciertas situaciones. Pero ¿qué pasa si (quizás por razones de seguridad) no quieres que tus contenedores utilicen el mismo DNS que tus hosts? Digamos, por ejemplo, que tus servidores host utilizan un servidor DNS específico para evitar que los usuarios visiten sitios particulares. O tal vez tienes configuraciones DNS diferentes para VPN.
Puede haber varias razones por las que no deseas que tus contenedores utilicen el mismo DNS que sus hosts. Entonces, ¿qué haces? ¿Cómo defines el DNS para los contenedores de Docker de manera que no capturen el DNS de la máquina de alojamiento?
En realidad, es bastante simple. Déjame mostrarte cómo.
Lo que necesitarás
Para que esto funcione, necesitarás una máquina con el motor de Docker instalado. Estaré demostrando en Ubuntu Server 20.04, pero la plataforma de alojamiento no importa, siempre y cuando tengas Docker en ejecución y puedas implementar contenedores. También querrás tener un usuario que sea miembro del grupo docker (para que no estés implementando como usuario root o con sudo, ambos son un problema de seguridad). Con esas cosas listas, vamos a implementar.
Cómo implementar un contenedor con DNS preconfigurado
Te mostraré cómo implementar contenedores de Docker con DNS preconfigurado. El primer método utilizará el comando docker y el segundo será a través de Docker Compose.
Protección antivirus en línea: McAfee Clinic lleva la seguridad de tu PC al siguiente nivelPor ejemplo, supongamos que deseas implementar un contenedor Ubuntu, llamado ubuntuDNS, con el servidor DNS primario Cloudflare de 1.0.0.1. El comando sería:
docker run -d -t --name ubuntuDNS --dns="1.0.0.1" ubuntu
También podrías implementar ese contenedor con un DNS primario y secundario de la siguiente manera:
docker run -d -t --name ubuntuDNS --dns="1.0.0.1" --dns="1.1.1.1" ubuntu
Asegurémonos de que el contenedor respete nuestra configuración DNS. Para eso, accede a la shell del contenedor con el siguiente comando:
docker exec -it ubuntuDNS bash
Desde la shell, ejecuta el siguiente comando:
cat /etc/resolv.conf
Deberías ver el(s) servidor(es) DNS que configuraste desde la línea de comandos (Figura A).
Figura A
Sal de la shell con el comando exit.
Ahora haremos lo mismo utilizando Docker Compose. Por supuesto, debes tener este comando instalado, lo cual se puede hacer con lo siguiente:
¡Defiéndete! Protege tu seguridad en línea contra amenazas críticaswget https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
chmod u+x docker-compose-Linux-x86_64
sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
Con Docker Compose instalado, ahora puedes crear el archivo necesario con el comando:
nano docker-compose.yaml
En ese archivo, vamos a implementar un contenedor de rabbitmq (un agente de mensajes de código abierto) que utilizará una entrada DNS de CloudFlare, que se verá así:
version: '3'
services:
service:
dns:
- "1.0.0.1"
- "1.1.1.1"
network_mode: "bridge"
image: rabbitmq:3-management
container_name: rabbitmq
hostname: rabbitmq
ports:
- "15672:15672"
Nota: Sin la opción network_mode configurada como "bridge", la entrada DNS no funcionará.
Protege tus contraseñas con PAM: Tu aliado para la seguridadGuarda y cierra el archivo. Implementa el contenedor con el comando:
docker-compose up
El contenedor se implementará. Abre una nueva conexión SSH al servidor de alojamiento (ya que la implementación no devolverá tu indicador de comando) y luego accede a la shell del contenedor de rabbitmq con el comando:
docker exec -it rabbitmq bash
Una vez dentro del contenedor, visualiza las entradas DNS con el comando:
cat /etc/resolv.conf
Deberías ver que se listan 1.0.0.1 y 1.1.1.1 (Figura B).
Figura B
Y eso es todo lo necesario para definir DNS en tus contenedores de Docker. El motivo por el que usarías esto dependerá de tus necesidades, pero tener esta función disponible puede ser muy útil.
En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Seguridad, allí encontraras muchos artículos similares a Cómo definir DNS en contenedores Docker: Guía paso a paso , tenemos lo ultimo en tecnología 2023.
Artículos Relacionados