GNU/Linux >> Linux の 問題 >  >> Linux

ホスト名を使用して docker ネットワーク内の他のコンテナーに ping を実行するにはどうすればよいですか?

この network_mode: bridge を削除します あなたの構成ファイルから、私のために働いた=)。


tgogos の功績:デフォルト以外のブリッジを使用する必要がありました。

完全を期すために、これが私の作業構成です。

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

ping が機能するようになりました。

$ 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

私が試して取り組んだ別の解決策は、ping したい内容をホスト名に明示的にリンクすることでした。たとえば、私は postgres を持っています コンテナ、および server 接続したいです。

server を実行します 以下で

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

サーバー コンテナー環境では、(指定された postgres で ping を実行できます。 同じブリッジ/ネットワーク上にあり、実行中です)

ping postgres 

--link以降

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

その後、2 つのコンテナーは名前で相互に ping を実行できます。


Linux
  1. DockerComposeの使用方法

  2. Dockerコンテナを接続する方法

  3. 環境変数をDockerコンテナに渡す方法

  1. Dockerコンテナを一覧表示する方法

  2. すべての Docker コンテナーを削除する方法

  3. できればターミナルを使用して、接続されたネットワーク内のすべての IP を一覧表示するにはどうすればよいですか?

  1. SSH を介してすべてのネットワーク トラフィックをトンネリングするにはどうすればよいですか?

  2. 利用可能なネットワーク インターフェイスを見つけるにはどうすればよいですか?

  3. 実行中のコンテナのホスト名を指定するには?