Dockerリンクはコンテナの相互接続を実現します

Dockerリンクはコンテナの相互接続を実現します

1.1. IP経由のコンテナ間のネットワークアクセス

2つの新しいコンテナtomcat01とtomcat02を作成します。

docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat02 tomcat

ここに画像の説明を挿入

ifconfig コマンドを使用して、toncat01 のネットワーク カード情報を表示します。

ここに画像の説明を挿入

tomcat01のIPアドレスは172.17.0.2であることがわかります。

次に、toncat02 のネットワーク カード情報を確認します。

ここに画像の説明を挿入

ご覧のとおり、tomcat02のIPアドレスは172.17.03です。

コンテナ tomcat01 と tomcat02 が相互に ping できるかどうかをテストします。

tomcat01 が tomcat02 に ping を送信します:

ここに画像の説明を挿入

tomcat02 が tomcat01 に ping を送信します:

ここに画像の説明を挿入

上記の 2 つの図に示すように、tomcat01 が tomcat02 に ping を送信する場合でも、tomcat02 が tomcat01 に ping を送信する場合でも、両方とも正常に ping されます。

注: コンテナ内に ifconfig コマンドと ping コマンドがない場合は、次のコマンドを順番に実行します。

apt-getアップデート
apt をインストール iputils-ping
apt インストール ネットツール

1.2. コンテナ名またはコンテナIDによるコンテナ間のネットワークアクセス

コンテナ名を介してコンテナ間のネットワーク接続を確立する場合は、docker run --link を使用して 2 つのコンテナをリンクする必要があります。

–link を使用すると、2 つのコンテナをリンクして、ソース コンテナ (リンクされたコンテナ) と受信コンテナ (アクティブにリンクを解除するコンテナ) が相互に通信できるようにし、受信コンテナがソース コンテナの環境変数などのソース コンテナの一部のデータを取得できるようにします。

–link 形式

--link <name or id>:alias

--link 別のコンテナへのリンクを追加する

name と id はソース コンテナーの名前と ID であり、alias はリンクの下のソース コンテナーのエイリアスです。

–linkの使用例

コンテナ tomcat03 を作成し、tomcat03 を受信コンテナ (アクティブにリンクするコンテナ) とし、上記の tomcat01 (エイリアス t1) をソース コンテナ (リンクされるコンテナ) として、2 つのコンテナをリンクします。

docker run -d -P --name tomcat03 --link tomcat01:t1 tomcat

tomcat01 は、上で起動した 7b94f50c43ea コンテナの名前です。ここではソース コンテナとして使用され、t1 はリンクの下のコンテナのエイリアスです。簡単に言うと、tomcat03 コンテナの観点からは、tomcat01 と t1 はどちらも 7b94f50c43ea コンテナの名前であり、コンテナのホスト名として、tomcat03 はこれら 2 つの名前のいずれかを使用して 7b94f50c43ea コンテナにアクセスして通信できます (docker は DNS を通じて自動的に解決します)。

リンクテストを実行します: tomcat03 ping tomcat01

tomcat01にpingする

ここに画像の説明を挿入

ピンt1

ここに画像の説明を挿入

両方とも ping でき、tomcat01 と t1 が 172.17.0.2 を指していることがわかります。

ただし、上記のリンクは一方向のみです。つまり、受信コンテナのみがソース コンテナにリンクでき、ソース コンテナは受信コンテナにリンクできません。つまり、tomcat03 は tomcat01 にリンクされ、tomcat03 は tomcat01 に ping できますが、tomcat01 は tomcat03 にリンクされておらず、tomcat01 は tomcat03 に ping できません。ただし、IP 経由で tomcat01 が tomcat03 に ping したり、tomcat03 が tomcat01 に ping したりすることには影響しません。

--リンク原則

tomcat03 の hosts ファイルを確認します。オペレーティング システムでは、DNS 要求を行う前に、システム自身の hosts ファイル内でドメイン名と IP の間にマッピング関係があるかどうかを確認するように規定されています。はいの場合は、IP アドレスで指定されたネットワークの場所に直接アクセスします。いいえの場合は、既知の DNS サーバーにドメイン名解決要求が行われます。

docker exec -it tomcat03 cat /etc/hosts

ここに画像の説明を挿入

tomcat03 の hosts 設定ファイルでは、tomcat01 の IP、コンテナ名、エイリアス、コンテナ ID がマッピングされていることがわかります。そのため、tomcat03 は指定されたコンテナ名を介して tomcat01 と通信できます。

–link は、受信コンテナ (ここでは tomcat003 という名前のコンテナ) に tomcat01 コンテナの名前解決を追加します。この名前解決により、ソース コンテナとの通信に IP を使用する必要がなくなります。また、ソース コンテナが再起動されると、Docker が /etc/hosts ファイルの更新を担当するため、コンテナの再起動後に IP アドレスが変更され、解決が有効にならないことを心配する必要はありません。

Docker リンクを使用してコンテナを相互接続する方法についての記事はこれで終わりです。Docker コンテナの相互接続の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerコンテナ相互接続の予備的な実践についての簡単な説明
  • Dockerのポートマッピングとコンテナの相互接続の詳細な説明
  • Docker 学習ノート: Weave がホスト間のコンテナ相互接続を実現
  • Dockerコンテナの相互接続方法の詳細な説明
  • docker --link コンテナ相互接続の実装

<<:  HTMLからPDFへの変換のための純粋なクライアント側と純粋なサーバー側の実装ソリューション

>>:  モバイル端末におけるビューポートの具体的な使用法についての簡単な説明

推薦する

mysql エラー 1033 を解決する方法: ファイル内の情報が正しくありません: 'xxx.frm'

問題の説明1. 収集ステーションのデータベース2. データが無い状態での移動は問題ありませんが、デー...

MySQL8のパスワードを忘れた場合の簡単な解決策

序文MySQL データベースのパスワードを忘れると、データベースに正常にアクセスできなくなり、パスワ...

MySQL で遅いファジークエリを最適化する方法

目次1. はじめに: 2. 最初のアイデアはインデックスを構築することです3. 命令P.S. Lik...

grpc のリバース プロキシとして nginx を使用する場合の落とし穴の概要

背景ご存知のとおり、nginx は高性能な Web サーバーであり、負荷分散やリバース プロキシによ...

Lvs+Nginx クラスターを使用して高並列アーキテクチャを構築する例

目次1. Lvsの紹介2. Lvs負荷分散モード2.1 NAT 2.2 ターン2.3 DRモード3....

Typescript+React でモバイルと PC でシンプルなドラッグ アンド ドロップ効果を実現

この記事では、モバイルとPCで簡単なドラッグアンドドロップ効果を実現するためのTypescript ...

ボタンの 4 つのクリック応答方法の概要

ボタンは頻繁に使用されます。ここでは、イベント処理メソッドを整理し、実装方法が多数あることを発見しま...

Linux システムで grub.cfg ファイルの破損を修復する手順

目次1. grub.cfg ファイルの紹介1. grub.cfg ファイルの場所2. grub.cf...

MySQLデータベースインデックスの詳細な説明

目次1. MySQLインデックスの紹介2. MySQLの5種類のインデックスの詳しい説明1. 総合索...

CocosCreator 学習モジュールスクリプト

Cocos Creator モジュラースクリプトCocos Creator を使用すると、コードを複...

Linuxの一般的なコマンドでLinuxのmoreコマンドを使用する方法

more は、最もよく使用されるツールの 1 つです。最も一般的な使用方法は、出力コンテンツを表示し...

Linux (CentOS) システムで MySQL データベース ディレクトリの場所を変更する方法

CentOS システムで MySQL データベース ディレクトリの場所を変更する方法1. まず、My...

mysql トリガーの作成と使用例

目次トリガーとは何かトリガーを作成するMySQL 作成構文のキーワードの説明: 1. MySQL ト...

MySQL インデックス失敗の原理

目次1. インデックス失敗の理由2. インデックスの秩序が崩れる状況を見てみましょう。 - インデッ...

MySQLのunion allとunionの違いを簡単に理解する

Union は、重複行を除外し、デフォルトのソートを実行する、データに対する結合操作です。Union...