Docker コンテナは互いに分離されており、相互にアクセスできないことは誰もが知っていますが、依存するサービスがある場合はどうなるでしょうか?コンテナ相互アクセス問題を解決するために、次の 3 つの方法が導入されています。 方法1: 仮想IPアクセス Docker をインストールすると、Docker はデフォルトで内部ブリッジ ネットワーク docker0 を作成します。作成された各コンテナーには仮想ネットワーク カードが割り当てられ、コンテナーは IP に基づいて相互にアクセスできるようになります。 [root@33fcf82ab4dd /]# [root@CentOS ~]# ifconfig ...... docker0: flags=4163<UP、ブロードキャスト、実行中、マルチキャスト> mtu 1500 inet 172.17.0.1 ネットマスク 255.255.0.0 ブロードキャスト 0.0.0.0 inet6 fe80::42:35ff:feac:66d8 プレフィックス長 64 スコープID 0x20<リンク> ether 02:42:35:ac:66:d8 txqueuelen 0 (イーサネット) RXパケット 4018 バイト 266467 (260.2 KiB) RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0 TXパケット 4226 バイト 33935667 (32.3 MiB) TXエラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0 ...... Centosイメージを実行し、IPアドレスを確認します: 172.17.0.7 [root@CentOS ~]# docker run -it --name centos-1 docker.io/centos:latest [root@6d214ff8d70a /]# ifconfig eth0: flags=4163<UP、ブロードキャスト、実行中、マルチキャスト> mtu 1500 inet 172.17.0.7 ネットマスク 255.255.0.0 ブロードキャスト 0.0.0.0 inet6 fe80::42:acff:fe11:7 プレフィックス長 64 スコープID 0x20<リンク> ether 02:42:ac:11:00:07 txqueuelen 0 (イーサネット) RXパケット 16バイト 1296 (1.2 KiB) RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0 TXパケット 8バイト 648 (648.0 B) TXエラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0 同じコマンドを実行して別のコンテナを起動し、IPアドレスを確認します: 172.17.0.8 [root@CentOS ~]# docker run -it --name centos-2 docker.io/centos:latest [root@33fcf82ab4dd /]# ifconfig eth0: flags=4163<UP、ブロードキャスト、実行中、マルチキャスト> mtu 1500 inet 172.17.0.8 ネットマスク 255.255.0.0 ブロードキャスト 0.0.0.0 inet6 fe80::42:acff:fe11:8 プレフィックス長 64 スコープID 0x20<リンク> ether 02:42:ac:11:00:08 txqueuelen 0 (イーサネット) RXパケット 8バイト 648 (648.0 B) RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0 TXパケット 8バイト 648 (648.0 B) TXエラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0 コンテナ内の ping テストの結果は次のとおりです。 [root@33fcf82ab4dd /]# 172.17.0.7にpingを実行 PING 172.17.0.7 (172.17.0.7) 56(84) バイトのデータ。 172.17.0.7 からの 64 バイト: icmp_seq=1 ttl=64 time=0.205 ms 172.17.0.7 からの 64 バイト: icmp_seq=2 ttl=64 time=0.119 ms 172.17.0.7 からの 64 バイト: icmp_seq=3 ttl=64 time=0.118 ms 172.17.0.7 からの 64 バイト: icmp_seq=4 ttl=64 time=0.101 ms この方法では各コンテナの IP アドレスを知る必要があり、実際の使用では現実的ではありません。 方法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) バイトのデータ。 centos-1 (172.17.0.7) からの 64 バイト: icmp_seq=1 ttl=64 time=0.210 ms centos-1 (172.17.0.7) からの 64 バイト: icmp_seq=2 ttl=64 time=0.116 ms centos-1 (172.17.0.7) からの 64 バイト: icmp_seq=3 ttl=64 time=0.112 ms centos-1 (172.17.0.7) からの 64 バイト: icmp_seq=4 ttl=64 time=0.114 ms この方法では、コンテナの作成順序に要件があります。クラスター内の複数のコンテナが相互にアクセスする必要がある場合、この方法はあまり便利ではありません。 方法3: ブリッジネットワークを作成する 1. Dockerをインストールした後、次のコマンドを実行してブリッジネットワークを作成します: docker network create testnet 新しく作成されたブリッジ テストネットが照会されます。 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) バイトのデータ。 centos-1.testnet (172.20.0.2) からの 64 バイト: icmp_seq=1 ttl=64 time=0.158 ms centos-1.testnet (172.20.0.2) からの 64 バイト: icmp_seq=2 ttl=64 time=0.108 ms centos-1.testnet (172.20.0.2) からの 64 バイト: icmp_seq=3 ttl=64 time=0.112 ms centos-1.testnet (172.20.0.2) からの 64 バイト: icmp_seq=4 ttl=64 time=0.113 ms 4. コンテナ内のサービスにアクセスする場合は、次の方法で<ネットワークエイリアス>: <サービスポート番号>にアクセスできます。 ネットワークをカスタマイズする場合はこの方法を使用することをお勧めします。ネットワークエイリアスを使用するため、IPが変わるかどうかを気にする必要はありません。Docker内の明るいネットワークに接続していれば、相互にアクセスできます。複数のブリッジを確立して、異なるネットワーク セグメントに分離することができます。 以上がDockerコンテナ相互アクセスの3つの方法の詳細です。Dockerコンテナ相互アクセスの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: 異なる列を持つテーブルのクエリ結果のSQLマージ操作
>>: Vueプロジェクトはログインと登録の効果を実現します
最近確認された5件のデータを照会するビジネスがあります。 `id`、`title` を選択 `th_...
Angular Cookie の読み取りおよび書き込み操作のコードは次のようになります。 var a...
JS でアニメーションを記述する場合、移動前に相対位置を絶対位置に変換してからアニメーション機能を実...
背景Tencent Linux クラウド ホストがあり、その上に Docker (ServiceDo...
目次1. ワークフローを実行する2. ミラーリングの基本コマンド1. ワークフローを実行するDock...
導入フロントエンドプロジェクトの開発プロセスでは、el-table によって表示される結果列がコンポ...
序文この記事では主に、MySQL で重複レコードをクエリして削除する方法を紹介します。参考と学習のた...
Docker コンテナでユーザーを切り替えると、権限が不十分であるというメッセージが表示されます。解...
XHTML を書くには、明確な HTML 構文が必要です。 XHTMLを書くには、きれいなHTML構...
Mysql Workbench はオープンソースのデータベース クライアントです。このオープンソース...
MySQL フルバックアップ1. バイナリログを有効にし、データベースから分離して別々に保存する v...
目次序文vue-cli 2.0 バージョンvue-cli 3.0 バージョン要約する序文vue-cl...
Linux へのリモート デスクトップ接続といえば、まず VNC の使用を思い浮かべるかもしれません...
1. MavenをダウンロードするMaven 公式サイト: http://maven.apache...
目次1. 電卓機能の紹介2. 計算機ページのデザイン1. ナビゲーションバー2. データ部分3. i...