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

970
Vistas
Contenedor de Docker-compose utilizando el servidor DNS del host

Estoy ejecutando varios contenedores en mi "Servidor Ubuntu 16.10" en una red puente "personalizada" con compose 2.9 (en una versión 2.1 de yml). La mayoría de mis contenedores usan internamente los mismos puertos, por lo que no tengo forma de usar el controlador de red "host". Mis contenedores son todos enlaces juntos, utilizando el atributo de links dedicados.

Pero también necesito acceder a los servicios expuestos fuera de mis contenedores. Estos servicios tienen URL dedicadas con nombres registrados en el servidor DNS de mi empresa. Si bien no tengo ningún problema para usar el DNS público y acceder a cualquier servicio público desde mis contenedores, simplemente no puedo acceder a mi DNS privado.

¿Conoce una solución que funcione para usar DNS privado desde un contenedor? O incluso mejor, ¿usar la configuración DNS de la red del host?

PD: Por supuesto, puedo vincular los servicios de mi empresa usando el atributo extra_hosts en mis servicios en mi archivo docker-compose.yml. Pero... ese definitivamente no es el objetivo de tener un DNS. No quiero registrar todos mis servicios en mi archivo YML, y no quiero actualizarlo cada vez que se actualizan las IP de los servicios en mi empresa.

Contexto :

  • Anfitrión: servidor Ubuntu 16.10
  • Motor acoplable: 1.12.6
  • Componer ventana acoplable: 1.9.0
  • docker-compose.yml: 2.1
  • Red: Puente propio.

archivo docker-compose.yml (extracto):

 version: '2.1' services: nexus: image: sonatype/nexus3:$NEXUS_VERSION container_name: nexus restart: always hostname: nexus.$URL ports: - "$NEXUS_81:8081" - "$NEXUS_443:8443" extra_hosts: - "repos.private.network:192.168.200.200" dns: - 192.168.3.7 - 192.168.111.1 - 192.168.10.5 - 192.168.10.15 volumes_from: - nexus-data networks: - pic networks: pic: driver: bridge ipam: driver: default config: - subnet: 172.18.0.0/16 gateway: 172.18.0.1

Probé con y sin la configuración de ipam para la red pic , sin suerte.

Pruebas y resultados: docker exec -ti nexus curl repos.private.network devuelve correctamente la página HTML servida por este servicio

docker exec -ti nexus curl another-service.private.network Devuelve curl: (6) Could not resolve host: another-service.private.network; Name or service not known Mientras que curl another-service.private.network desde el host devuelve la página HTML adecuada.

Y "por supuesto" se conoce another-service.private.network de servicio en mis 4 servidores DNS (192.168.3.7, 192.168.111.1, 192.168.10.5, 192.168.10.15).

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

0

No especifica en qué entorno está ejecutando docker-compose, por ejemplo, Mac, Windows o Unix, por lo que dependerá un poco de los cambios necesarios. Tampoco especifica si está utilizando la red de puente predeterminada en la ventana acoplable en una red de puente creada por el usuario.

En cualquier caso, de forma predeterminada, Docker debería intentar asignar la resolución de DNS desde Docker Host a sus contenedores. Entonces, si su Docker Host puede resolver las direcciones DNS privadas, entonces, en teoría, sus contenedores también deberían poder hacerlo.

Recomiendo leer esta documentación oficial de DNS de Docker, ya que es bastante razonable. Aquí para la red de puente de Docker predeterminada, aquí para las redes de puente creadas por el usuario.

Un pequeño problema es que si está ejecutando Docker para Mac, Docker Machine o Docker para Windows, debe recordar que su Docker Host es en realidad la VM que se ejecuta en su máquina y no la caja física en sí, por lo que debe asegurarse de que el La máquina virtual tiene configuradas las opciones de resolución de DNS correctas. Deberá reiniciar sus contenedores para que los cambios en la resolución de DNS sean recogidos por ellos.

Por supuesto, puede anular todas las configuraciones predeterminadas usando docker-compose . Tiene opciones completas para configurar explícitamente servidores DNS, opciones de búsqueda de DNS, etc. Como ejemplo:

 version: 2 services: application: dns: - 8.8.8.8 - 4.4.4.4 - 192.168.9.45

Encontrará la documentación para esas características aquí .

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