Saltar al contenido

¿Cómo puedo hacer ping a otros contenedores en una red docker a través de su nombre de host?

Puede que se de el caso de que encuentres alguna incompatibilidad en tu código o proyecto, recuerda probar siempre en un entorno de testing antes añadir el código al proyecto final.

Créditos a tgogos: solo tuve que usar el puente no predeterminado.

Para completar, aquí está mi configuración de trabajo.

version: "3"
services:
  main:
    networks:
      test:
    image: python:3.5.2
    entrypoint: /usr/bin/yes

  another:
    networks:
      test:
    image: python:3.5.2
    entrypoint: /usr/bin/yes


networks:
  test:
    driver: bridge

Y el ping ahora funciona.

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
faa9f96d46a9        python:3.5.2        "/usr/bin/yes"      9 seconds ago       Up 9 seconds                            dockerplayground_main_1
5b2d56ac0cd7        python:3.5.2        "/usr/bin/yes"      9 seconds ago       Up 8 seconds                            dockerplayground_another_1
$ docker exec -it faa ping another
PING another (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: icmp_seq=0 ttl=64 time=0.054 ms
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.047 ms
64 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.059 ms
64 bytes from 172.18.0.2: icmp_seq=3 ttl=64 time=0.066 ms

borrar esto network_mode: bridge de su archivo de redacción, funcionó para mí =).

Otra solución que probé y trabajé fue vincular explícitamente el contenido al que desea hacer ping con el nombre del host. Por ejemplo, tengo un postgres contenedor y un server quiere conectarse a él.

ejecutar el server con lo siguiente

docker run --name server --link postgres someserver:latest

En el entorno del contenedor del servidor, puede hacer ping con (dado postgres está en el mismo puente/red y se está ejecutando)

ping postgres 

Ya que --link ha quedado en desuso, se recomienda utilizar el puente de red.

docker network create YOURNETWORK
docker run --name postgres --network='YOURNETWORK' postgres:latest
docker run --name server --network='YOURNETWORK' server:latest

entonces los dos contenedores pueden hacer ping entre sí por nombre.

Recuerda recomendar este ensayo si te fue de ayuda.

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


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

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