Red de conocimiento informático - Aprendizaje de programación - El enlace Docker-compose hace que el servicio no esté disponible.

El enlace Docker-compose hace que el servicio no esté disponible.

El problema es este. Generalmente, cuando escribimos servicios en docker-compose.yaml, los servicios pueden acceder entre sí a través de los nombres de los servicios. Docker también proporciona la función de carga en la parte inferior si el nombre se utiliza para el acceso entre servicios.

Aquí puede ver que el dns integrado de Docker ha cargado nuestro servicio who.

Aquí se ha añadido un enlace.

Aquí puedes ver que la IP devuelta dos veces es la misma. Puedes probarlo muchas veces y deberías obtener la misma IP.

Puedes detener el contenedor inicial abriendo otra terminal.

Luego haz ping al servicio de la OMS.

Entonces lo que pasó aquí fue muy extraño, el ping no funcionó.

Se puede inferir que el servicio Who y su IP se han escrito en Busybox cuando se inicia Docker Compose, por lo que Busybox solo vinculará el primer Who iniciado y no hay ningún servicio DNS integrado en Docker.

Muchos artículos señalan que el nombre del contenedor y la IP se escriben directamente en /etc/hosts.

El resultado de mi prueba aquí es que 32cee21646a5 es el ID del contenedor de Busybox y 172.20.0.3 es la IP de Busybox. Aquí no hay correspondencia con nadie, por lo que algunos artículos en Internet deben estar equivocados.

Incluso utilicé tcpdump para capturar los paquetes de resolución dns de la tarjeta de red correspondiente.

Sin embargo, la causa raíz de este problema no se ha encontrado después de todo. Es posible que tengas que usar Docker para implementar el análisis DNS integrado para encontrar el resultado.

Esperando el seguimiento. . .