Executar un proxy e un servidor DNS nun mesmo host Docker non conecta as súas rutas DNS. Importan tres relacións separadas:

  • Alcance de rede. Os proxectos Compose separados adoitan ter redes predeterminadas separadas. Coloca os servizos nunha rede compartida axeitada, xa sexa dentro dun proxecto ou mediante unha rede compartida explicitamente entre proxectos.
  • Descubrimento de servizos. O DNS integrado dunha rede Docker personalizada pode resolver nomes de contedores. Iso permite que unha aplicación descubra un veciño; pero non selecciona automaticamente ese veciño como o seu resolvedor DNS.
  • Selección do resolvedor. Identifica o resolvedor que se usa dentro do contedor proxy. O campo dns de Compose acepta enderezos de servidores DNS. Un nome como dns.local que se resolve nunha aplicación non o converte nun valor válido para ese campo.

Segue a consulta desde o contedor proxy ata o seu enderezo de resolvedor configurado. Confirma que hai unha ruta e un escoitador DNS nese enderezo. Publicar o porto 53 do host crea unha vía de acceso do lado do host; pero non indica aos contedores que a usen. Os contedores que comparten unha rede poden, en cambio, comunicarse directamente.

Se a configuración referencia o enderezo do contedor DNS, manteno estable cunha configuración IPAM compatible. Un enderezo asignado dinamicamente e copiado do contedor de onte pode fallar ao recrealo. Inspecciona tamén a ruta ascendente do resolvedor: reenviar consultas sen resposta cara a si mesmo crea un fallo distinto do dun resolvedor inalcanzable.

Por último, identifica quen resolve o destino. Un proxy HTTP que resolve un nome CONNECT pode usar esta ruta a través do contedor; un cliente SOCKS que resolve localmente pode que non. Unha consulta no host demostra a ruta do host, non a do proceso do proxy.

Artigos relacionados