Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

639
Vistas
¿Cómo funciona la resolución de DNS integrada de Docker?

Sé que Docker tiene un solucionador de Dns integrado.
cuando ejecuto un contenedor en mí mismo puente:

 $ docker run -it --rm --privileged --network=mybridge xxx bash root@18243bfe6b50:/# cat /etc/resolv.conf nameserver 127.0.0.11 options ndots:0 root@18243bfe6b50:/# netstat -anop Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name Timer tcp 0 0 127.0.0.11:45997 0.0.0.0:* LISTEN - off (0.00/0/0) udp 0 0 127.0.0.11:49614 0.0.0.0:* it shows there is a dns resolver, and iptables help do a port transfer. root@18243bfe6b50:/# iptables -nvL -t nat ..... Chain DOCKER_OUTPUT (1 references) pkts bytes target prot opt in out source destination 0 0 DNAT tcp -- * * 0.0.0.0/0 127.0.0.11 tcp dpt:53 to:127.0.0.11:45997 0 0 DNAT udp -- * * 0.0.0.0/0 127.0.0.11 udp dpt:53 to:127.0.0.11:49614 Chain DOCKER_POSTROUTING (1 references) pkts bytes target prot opt in out source destination 0 0 SNAT tcp -- * * 127.0.0.11 0.0.0.0/0 tcp spt:45997 to::53 0 0 SNAT udp -- * * 127.0.0.11 0.0.0.0/0 udp spt:49614 to::53 but, which process is the dns resolver? I guess it is dockerd? but dockerd is running in host network namespace, obviously it is different with the container network namespace, also, I can not find dockerd has dns port listening in host: root@test:~# netstat -tnop |grep dockerd tcp 0 0 10.5.79.50:59540 10.5.79.50:2377 ESTABLISHED 3332/dockerd off (0.00/0/0) tcp 0 0 127.0.0.1:35792 127.0.0.1:2377 ESTABLISHED 3332/dockerd off (0.00/0/0) tcp6 0 0 10.5.79.50:2377 10.5.79.70:45934 ESTABLISHED 3332/dockerd off (0.00/0/0) tcp6 0 0 127.0.0.1:2377 127.0.0.1:35792 ESTABLISHED 3332/dockerd off (0.00/0/0) tcp6 0 0 10.5.79.50:2377 10.5.79.50:59540 ESTABLISHED 3332/dockerd off (0.00/0/0)

¿Cómo un proceso (dockerd) expone algunos puertos en el espacio de nombres del host y algunos puertos en otro espacio de nombres (contenedor)? Leí algo de código, pero aún no puedo entenderlo, ¿alguien podría ayudarme a responder?

Gracias.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Tal vez ya descubrió que Docker (también conocido como Moby) usa internamente libnetwork para configurar y habilitar el solucionador de DNS incorporado . Libnetwork vincula la resolución a la interfaz de bucle invertido del contenedor, de modo que las consultas de DNS en 127.0.0.11 se puedan enrutar (a través de iptables) a la "resolución de DNS de back-end" en Docker Engine. Vea el tipo de libnetwork y el código ResolveName() real. El Sandbox para cada contenedor permite enrutar las consultas de DNS a través de los espacios de nombres de la red.

Con respecto a su pregunta, cómo un proceso puede exponer puertos en el host y dentro de un contenedor: en este caso, vincular un subproceso de controlador a una interfaz sería una expresión más apropiada. El motor de Docker crea un contenedor y configura su espacio de nombres de red, por lo que también puede configurar las interfaces de red del contenedor y el enrutamiento de paquetes a través de iptables. Vincular el resolutor a la interfaz interna del contenedor es la razón por la que no ha encontrado ningún proceso en el host que escucha en el puerto 53.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda