コンテナ間の主な通信方法
コンテナ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 ネットワーク ネットワーク モード説明
他に問題がある場合は、メッセージを残してください
このドキュメントが役に立たない場合は、次のブログを参照してください。