GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich andere Container in einem Docker-Netzwerk über ihren Hostnamen anpingen?

lösche diesen network_mode: bridge aus Ihrer Compose-Datei, hat bei mir funktioniert =).


Dank an tgogos:Ich musste nur die nicht standardmäßige Bridge verwenden.

Der Vollständigkeit halber hier meine funktionierende Konfiguration.

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

Und der Ping funktioniert jetzt.

$ 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

Eine andere Lösung, die ich ausprobiert und bearbeitet habe, war das explizite Verknüpfen des Inhalts, den Sie pingen möchten, mit dem Hostnamen. Ich habe zum Beispiel einen postgres Container und ein server möchte sich damit verbinden.

Führen Sie server aus mit folgendem

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

In der Server-Container-Umgebung können Sie dann mit (angegeben postgres befindet sich auf der gleichen Bridge/im gleichen Netzwerk und läuft)

ping postgres 

Seit --link veraltet ist, wird empfohlen, eine Netzwerkbrücke zu verwenden.

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

dann können sich die beiden Container namentlich anpingen.


Linux
  1. So verwenden Sie Docker Compose

  2. So entfernen Sie alle Docker-Container

  3. Wie kann ich alle IPs im verbundenen Netzwerk auflisten, vorzugsweise über Terminal?

  4. QEMU, wie man das Host-Netzwerk anpingt?

  5. Wie finde ich verfügbare Netzwerkschnittstellen?

So löschen Sie ungenutzte Docker-Ressourcen

So führen Sie Docker-Container aus

So entfernen Sie Docker-Container

So stoppen Sie Docker-Container

So verwalten Sie Docker-Container

So konfigurieren Sie Netzwerk-Namespaces in Docker-Containern