GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso eseguire il ping di altri contenitori in una rete docker tramite il loro nome host?

elimina questo network_mode: bridge dal tuo file di composizione, ha funzionato per me =).


Ringraziamenti a tgogos:ho dovuto usare solo il bridge non predefinito.

Per completezza, ecco la mia configurazione funzionante.

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

E il ping ora funziona.

$ 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

Un'altra soluzione che ho provato e funzionato è stata collegare esplicitamente il contenuto che si desidera eseguire il ping con il nome host. Ad esempio, ho un postgres contenitore e un server vuole connettersi ad esso.

Esegui il server con quanto segue

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

Nell'ambiente del contenitore del server, puoi quindi eseguire il ping con (dato postgres è sullo stesso bridge/rete ed è in esecuzione)

ping postgres 

Dal --link è stato deprecato, si consiglia di utilizzare il bridge di rete.

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

quindi i due contenitori possono eseguire il ping reciproco per nome.


Linux
  1. Come usare Docker Compose

  2. Come elencare i contenitori Docker

  3. Come posso incanalare tutto il mio traffico di rete attraverso SSH?

  4. Come posso elencare tutti gli IP nella rete connessa, preferibilmente tramite Terminal?

  5. Come specificare il nome host per il contenitore in esecuzione?

Come eliminare le risorse Docker inutilizzate

Come eseguire i contenitori Docker

Come rimuovere i contenitori Docker

Come fermare i container Docker

Come gestire i container Docker

Come configurare gli spazi dei nomi di rete nei contenitori Docker