ホームページ >運用・保守 >Docker >Dockerでコンテナ間でアクセスする方法

Dockerでコンテナ間でアクセスする方法

尚
オリジナル
2020-03-24 16:09:355350ブラウズ

Dockerでコンテナ間でアクセスする方法

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

新しく作成したブリッジ テストネットをクエリします。

Dockerでコンテナ間でアクセスする方法

#2. コンテナーを実行し、テストネット ネットワークに接続します。

使用法: docker run -it --name ---network --network-alias

[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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。