Docker の最初の講義 Docker コンテナ間/コンテナとホスト間で ping ができない

コンテナ間の主な通信方法

  • コンテナIP経由でアクセス

コンテナが再起動すると、IP が変更されます。コンテナ IP 経由でアクセスするのは良い解決策ではありません。

  • ホストの ip:port 経由でアクセスする

ホストの ip:port を介したアクセスは、限定された通信のために公開されたポートをリッスンするプロセスにのみ依存できます。

  • リンクを介して接続を確立します (公式には推奨されません)

コンテナーを実行するときにパラメーター リンクを指定すると、ソース コンテナーとリンクされたコンテナーが相互に通信できるようになり、受け入れられたコンテナーがソース コンテナーの一部のデータ (環境変数など) を取得できるようになります。

# 源容器
docker run -itd --name container -e MYSQL_ROOT_PASSWORD=root mysql:5.7
#被链接容器 
docker run -itd --name container --link test-mysql:mysql  centos /bin/bash
#进入容器
docker exec -it container /bin/bash
  • ユーザー定義のネットワーク経由 (推奨)

docker network を使用してブリッジ ネットワークを作成し、docker の実行中に新しく作成したブリッジ ネットワークにコンテナを指定すると、同じブリッジ ネットワーク内のコンテナが相互にアクセスできるようになります。

docker run -it --network network --network-alias mysql  -e MYSQL_ROOT_PASSWORD=123 mysql:5.7

リンクされたコンテナを起動する

 docker run -it --network test-network --network-alias centos  centos /bin/bash

Dockerホストとコンテナの通信

まずファイアウォールについてですが、ローカルのファイアウォールの設定を確認し、ファイアウォールを閉じて次の操作を続行することができます。

ホストとコンテナーの間で通信できない場合は、デフォルトのコンテナー ネットワークがブリッジ形式のブリッジを採用しており、コンテナー内に独自のネットワーク セグメントを開くため、次に使用する必要があるコマンドは次のとおりです。

ifconfig
查看下你本地的docker网络配置
docker network inspect [你容器挂载的network]
查看你的容器网络分段ip地址
route -n 
查看你的本地容器地址

ローカル ネットワークが私のものと一致しているかどうかを確認してください。ローカル ネットワーク セグメントを変更したい場合は、次の手順を実行できます。

"default-address-pools" : [
    {
      "base" : "192.168.1.0/8",
      "size" : 24
    }
  ]

ネットワーク セグメント 192.168.1.0/8、サイズ: 24 を指定すると、Docker ネットワーク セグメント 192.0.0.1 がローカルに設定されます。変更後は必ず Docker を再起動してください。

systemctl restart docker

以前のネットワークを削除し、ローカルでネットワークを再作成し、作成したネットワークのネットワーク セグメント アドレスを再度確認すると変更されます。ネットワークのネットワーク構成については、このブログを参照してください: Docker 講義 4 Docker ネットワーク ネットワーク モード説明

他に問題がある場合は、メッセージを残してください

このドキュメントが役に立たない場合は、次のブログを参照してください。

Docker コンテナがホストと外部ネットワークに ping できない問題のトラブルシューティングと解決

おすすめ

転載: blog.csdn.net/huanglu0314/article/details/129685114