Skip to content
BotServBotServ
DockerDNSRedesNombres de contenedoresaliases

Nombres DNS internos en Docker

DNS interno de Docker y resolución de nombres. Nombres de contenedores, redes personalizadas, alias y solución de problemas.

S

schutzgeist

3 min read
Nombres DNS internos en Docker

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 dns en 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

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

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.

Volver al blog
Share:

Entradas relacionadas