Docker コンテナーは相互に分離されており、相互にアクセスできないことは誰もが知っていますが、依存するサービスがいくつかある場合はどうすればよいでしょうか。以下では、コンテナ相互アクセスの問題を解決する 3 つの方法について説明します。
方法 1、仮想 IP アクセス
docker をインストールするとき、docker はデフォルトで内部ブリッジ ネットワーク docker0 を作成します。作成された各コンテナには仮想ネットワーク カードが割り当てられ、コンテナは相互にアクセスできます。 IPに基づいて。
[root@33fcf82ab4dd /]# [root@CentOS ~]# ifconfig ...... docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::42:35ff:feac:66d8 prefixlen 64 scopeid 0x20<link> ether 02:42:35:ac:66:d8 txqueuelen 0 (Ethernet) RX packets 4018 bytes 266467 (260.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4226 bytes 33935667 (32.3 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ......
方法 2、リンク
コンテナ実行時にパラメータ リンクを追加
最初のコンテナを実行
docker run -it --name centos-1 docker.io/centos:latest
2 番目のコンテナを実行
[root@CentOS ~]# docker run -it --name centos-2 --link centos-1:centos-1 docker.io/centos:latest
--link: パラメーターの最初の centos-1 はコンテナー名で、2 番目の centos-1 は定義されたコンテナーのエイリアスです (コンテナーにアクセスするにはエイリアスを使用します)。使いやすいように、通常、エイリアスのデフォルトは次のとおりです。コンテナ名。
テスト結果は次のとおりです:
[root@e0841aa13c5b /]# ping centos-1 PING centos-1 (172.17.0.7) 56(84) bytes of data. bytes from centos-1 (172.17.0.7): icmp_seq=1 ttl=64 time=0.210 ms bytes from centos-1 (172.17.0.7): icmp_seq=2 ttl=64 time=0.116 ms bytes from centos-1 (172.17.0.7): icmp_seq=3 ttl=64 time=0.112 ms bytes from centos-1 (172.17.0.7): icmp_seq=4 ttl=64 time=0.114 ms
方法 3. ブリッジ ネットワークを作成します
1. docker をインストールした後、次のコマンドを実行してブリッジ ネットワークを作成します: docker network create testnet
新しく作成したブリッジ テストネットをクエリします。
#2. コンテナーを実行し、テストネット ネットワークに接続します。
使用法: docker run -it --name <コンテナ名> ---network
[root@CentOS ~]# docker run -it --name centos-1 --network testnet --network-alias centos-1 docker.io/centos:latest [root@CentOS ~]# docker run -it --name centos-2 --network testnet --network-alias centos-2 docker.io/centos:latest
3. あるコンテナから別のコンテナに ping を実行すると、テスト結果は次のようになります。
[root@fafe2622f2af /]# ping centos-1 PING centos-1 (172.20.0.2) 56(84) bytes of data. bytes from centos-1.testnet (172.20.0.2): icmp_seq=1 ttl=64 time=0.158 ms bytes from centos-1.testnet (172.20.0.2): icmp_seq=2 ttl=64 time=0.108 ms bytes from centos-1.testnet (172.20.0.2): icmp_seq=3 ttl=64 time=0.112 ms bytes from centos-1.testnet (172.20.0.2): icmp_seq=4 ttl=64 time=0.113 ms
その他の関連チュートリアルについては、PHP 中国語 Web サイトの dockertutorial 列に注目してください。
以上がDockerでコンテナ間でアクセスする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。