Nombres DNS internos en Docker
Qué cubre este artículo sobre DNS interno en Docker
- Cómo los contenedores se alcanzan mutuamente por nombre.
- DNS en redes personalizadas.
- Alias y nombres de red.
- Resolución de problemas DNS.
- Relación con
/etc/hosts.
Introducción: Nombres DNS internos en Docker
Docker proporciona su propia resolución DNS en redes personalizadas. Los contenedores no solo pueden alcanzarse por IP, sino también mediante su nombre de servicio, su alias o su nombre de contenedor. Esto hace que las configuraciones con Compose sean mucho más estables, porque las IPs pueden cambiar, pero los nombres permanecen consistentes. Quien comprende los nombres DNS internos puede operar aplicaciones sin necesidad de IPs hardcodeadas.
Este artículo explica cómo funciona el DNS interno de Docker y cómo aprovecharlo.
Términos clave
- Nombre de contenedor: nombre del contenedor en el sistema Docker.
- Nombre de servicio: nombre en Compose.
- Alias: nombre DNS adicional.
- Red personalizada: red con DNS integrado.
- Bridge por defecto: red estándar sin DNS.
- Resolvidor DNS: servicio que convierte nombres en IPs.
- Hostname: nombre que el contenedor lleva consigo.
Por qué redes personalizadas
En el bridge por defecto, los contenedores deben comunicarse por IP. Las redes personalizadas incluyen DNS integrado:
docker network create mein-netz
docker run -d --name web --network mein-netz nginx
docker run -d --name app --network mein-netz curlimages/curl curl http://web
web se resuelve automáticamente a su IP.
En Compose
services:
web:
image: nginx
app:
image: curlimages/curl
command: curl http://web
Compose crea automáticamente una red en la que web está disponible como nombre DNS.
Alias
services:
db:
image: postgres
networks:
backend:
aliases:
- datenbank
- db-primary
networks:
backend:
Otros contenedores pueden dirigirse a db, datenbank o db-primary.
Establecer hostname
services:
app:
image: mein-app
hostname: app-1
Dentro del contenedor, app-1 será su propio hostname.
Verificar DNS
Dentro de un contenedor:
nslookup web
nslookup db
Si falta nslookup:
getent hosts web
Servidor DNS
Docker utiliza un resolvidor interno. Los servidores DNS externos se pueden establecer en Compose:
services:
app:
image: mein-app
dns:
- 1.1.1.1
- 8.8.8.8
Esto solo reemplaza el DNS del contenedor para consultas externas.
Múltiples redes
Un contenedor puede estar en varias redes y tendrá múltiples nombres:
services:
app:
networks:
- frontend
- backend
networks:
frontend:
backend:
Otros contenedores en la misma red alcanzan app mediante su nombre de servicio.
Problemas DNS
Los nombres no se resuelven
- ¿El contenedor está en la misma red?
- Verifica la ortografía del nombre de servicio.
- ¿Has reiniciado Compose?
La IP ha cambiado
Es normal. El nombre del contenedor permanece estable, la IP no.
Los nombres externos no son accesibles
- Verifica el reenvío DNS de Docker.
- Establece la opción
dnsen Compose. - Revisa las reglas del firewall.
Nombre con guiones
Docker DNS soporta guiones. Se deben evitar los puntos.
Recomendaciones
- Usa siempre redes personalizadas o Compose.
- Elige nombres de servicio claros y únicos.
- Aprovecha los alias para compatibilidad hacia atrás.
- No hardcodees IPs en URLs.
- Prueba DNS dentro del contenedor si hay problemas.
- Configura DNS externo por separado.
Enlaces y referencias adicionales
- BotServ.de Docker Network
- BotServ.de Docker Network Isolation
- BotServ.de Docker Compose
- BotServ.de Docker Reverse Proxy
FAQ: DNS interno de Docker
¿Pueden los contenedores alcanzarse por nombre en la red bridge estándar? No, allí no hay DNS integrado.
¿Cuál es el nombre DNS en Compose?
El nombre de servicio de la sección services:.
¿Qué son los alias? Nombres adicionales para el mismo contenedor en la red.
¿Por qué cambia la IP? Porque los contenedores pueden obtener nuevas IPs al reiniciarse.
¿Puedo ingresar mi propio servidor DNS?
Sí, mediante dns en Compose o en docker run.
Fuentes y lecturas adicionales
- Docker DNS: https://docs.docker.com/config/containers/container-networking/#dns-services
- Compose Networking: https://docs.docker.com/compose/networking/
- Custom Networks: https://docs.docker.com/network/bridge/
Resumen: Nombres DNS internos en Docker
Las redes Docker personalizadas ofrecen resolución DNS interna que hace que los contenedores sean alcanzables por nombre. Compose lo utiliza automáticamente, los alias permiten nombres adicionales y hostname configura el nombre interno de la máquina. Quien prescinde de nombres claros y hardcodea IPs hace que las configuraciones sean frágiles. Con DNS de Docker, las conexiones permanecen estables incluso cuando las IPs cambian.


