Docker がコンテナ間のクロスネットワーク アクセスを実装する方法

1.ドッカーネットワーク

1. Dockerネットワークの概要

Docker にはデフォルトで仮想ルート docker0 があります。docker0 のネットワーク モードはブリッジ モードです。Docker コンテナはホスト間でこの仮想ルートを通じて転送されます。これは LAN に相当します。コンテナを作成するとき、docker はコンテナごとに仮想ネットワーク カードを作成します。コンテナです。

2. Docker の一般的なネットワーク モード

ブリッジ: ブリッジ モード
none: ネットワークが指定されていません
host: 共有ホスト ネットワーク
コンテナ: コンテナ ネットワーク

3. Dockerネットワークの共通コマンド

docker network --help

2. Docker はコンテナ間のネットワーク間アクセスをどのように実現するか

1. すべての Docker ネットワークを表示する

docker network ls

2. 別のネットワークを作成して、コンテナ内のさまざまなネットワーク セグメントのネットワークをシミュレートします (カスタム サブネット マスクとゲートウェイ)。

docker network create --driver bridge --subnet 192.168.1.0/16 --gateway 192.168.1.0 diffnet

3. docker0 と diffnet を使用して 2 つの Tomcat を起動します
 

4. 異なるネットワーク上の Tomcat コンテナ情報を表示する

docker network inspect diffnet   # diffnet 替换成对应的network id或name

docker0 ネットワークでの対応するコンテナ IP:

        docker-tomcat01:172.17.0.4

        docker-tomcat02:172.17.0.5

diffnet ネットワーク上の対応するコンテナ IP:

        diffnet-tomcat01:192.168.0.1

        diffnet-tomcat02:192.168.0.2

5. コンテナに ping コマンドをインストールする

コンテナに入った後、pingコマンドが使用できない場合は、以下のコマンドを使用してコンテナ内にインストールします

apt-get update
apt install net-tools       
apt install iputils-ping 

内部インストールが失敗した場合は、次の方法を使用して ping コマンド インストールを実行できます。

1.在宿主机上使用以下命令手动下载 BusyBox:
wget https://busybox.net/downloads/binaries/1.21.1/busybox-x86_64
2.然后将下载的文件复制到容器内:
docker cp busybox-x86_64 <容器名称或ID>:/usr/local/bin/busybox
3.在容器内创建符号链接并安装 ping 命令:
docker exec -it <容器名称或ID> ln -s /usr/local/bin/busybox /bin/ping
4.给下载的文件授予执行权限:
chmod +x /usr/local/bin/busybox   #容器内执行

6. コンテナ内で ping コマンドを使用して、接続を確認します。

検査結果は次のとおりです。同じネットワークには ping が実行できますが、他のネットワーク セグメントには ping が実行できません。

7. docker0 のコンテナを diffnet ネットワークに接続します

docker network connect diffnet docker-tomcat01

コマンドを使用して diffnet 情報を表示する

 docker network inspect diffnet

docker-tomcat01 は、connect コマンドを通じて diffnet のメタデータに追加されます。

コンテナ docker-tomcat01 に再度入り、別のネットワークで ping コマンド接続テ​​ストを実行すると、結果は次のようになります。

これにより、Dockerコンテナ間のクロスネットワークアクセス機能が実現されました。

おすすめ

転載: blog.csdn.net/qq_54494363/article/details/132601636
おすすめ