Saltar al contenido

¿Cómo llegar a los contenedores de Docker por nombre en lugar de por dirección IP?

Solución:

Estibador 1.10 tiene un DNS incorporado. Si sus contenedores están conectados al mismo usuario definido red (crea una red docker network create my-network y ejecuta tu contenedor con --net my-network) pueden hacer referencia entre sí utilizando el nombre del contenedor. (Documentos).

¡Frio!

Una advertencia si está utilizando Docker compose, sabe que agrega un prefijo a los nombres de sus contenedores, es decir <project name>_<service name>-#. Esto hace que los nombres de sus contenedores sean algo más difíciles de controlar, pero podría estar bien para su caso de uso. Puede anular la función de nomenclatura de composición de la ventana acoplable configurando manualmente el nombre del contenedor en su plantilla de redacción, pero luego no podrá escalar con redactar.

Cree una nueva red puente que no sea docker0, ejecute sus contenedores dentro de ella y podrá hacer referencia a los contenedores dentro de esa red por sus nombres.

El demonio de Docker ejecuta un servidor DNS integrado para proporcionar detección automática de servicios para contenedores conectados a redes definidas por el usuario. Las solicitudes de resolución de nombres de los contenedores son manejadas primero por el servidor DNS integrado.

Prueba esto:

docker network create <network name>
docker run --net <network name> --name test busybox nc -l 0.0.0.0:7000
docker run --net <network name> busybox ping test

Primero, creamos una nueva red. Luego, ejecutamos un contenedor busybox llamado prueba escuchando en el puerto 7000 (solo para que siga funcionando). Finalmente, hacemos ping al contenedor de prueba por su nombre y debería funcionar.

EDITAR 2018-02-17: Docker puede eventualmente eliminar el links clave de docker-compose, por lo tanto, sugieren usar redes definidas por el usuario como se indica aquí => https://docs.docker.com/compose/compose-file/#links


Suponiendo que quiere llegar al mysql contenedor de la web contenedor de tu docker-compose.yml archivo, como:

web:
  build: .
  links:
    - mysql

mysqlservice:
  image: mysql

Le complacerá saber que Docker Compose ya agrega un mysqlservice nombre de dominio (en el web envase /etc/hosts) que apuntan al mysql envase.

En lugar de buscar el mysql dirección IP del contenedor, puede utilizar la mysqlservice nombre de dominio.

Si desea agregar nombres de dominio personalizados, también es posible con el parámetro extra_hosts.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *