Dockerカスタムネットワーク実装

Dockerカスタムネットワーク実装

1. コンテナ相互接続を実現するためにネットワークをカスタマイズする

4種類のネットワークモード。docker network lsを使用してdockerネットワークモードを表示します。

Docker ネットワーク モード構成例示する
ホストモード–net=ホストコンテナとホストはネットワーク名前空間を共有します。
コンテナモード–net=コンテナ:NAME_or_IDコンテナは別のコンテナとネットワーク名前空間を共有します。 Kubernetes のポッドは、ネットワーク名前空間を共有する複数のコンテナです。
なしモード–net=なしコンテナには独立したネットワーク名前空間がありますが、veth ペアやブリッジ接続の割り当て、IP の構成などのネットワーク設定は実行されません。
ブリッジモード–net=ブリッジブリッジモード(このモードがデフォルトです)

–net=bridge これはデフォルト値であり、デフォルトのブリッジに接続します。

–net=host は、コンテナ ネットワークを分離された名前空間に配置しないように、つまりコンテナ内のネットワークをコンテナ化しないように Docker に指示します。この時点で、コンテナはローカル ホストのネットワークを使用し、ローカル ホスト インターフェイスに完全にアクセスできます。コンテナ プロセスは、ホスト上の他のルート プロセスと同様に低範囲ポートを開き、D-bus などのローカル ネットワーク サービスにアクセスし、ホストの再起動など、ホスト システム全体に影響する操作をコンテナが実行できるようにすることができます。したがって、このオプションは慎重に使用してください。 --privileged=true をさらに使用すると、コンテナはホストのネットワーク スタックを直接構成できるようになります。

–net=container:NAME_or_ID は、新しく作成されたコンテナ プロセスを既存のコンテナのネットワーク スタックに配置するように Docker に指示します。新しいコンテナ プロセスには独自のファイル システム、プロセス リスト、およびリソース制限がありますが、IP アドレスやポートなどのネットワーク リソースは既存のコンテナと共有されます。2 つのプロセスは、lo ループバック インターフェイスを介して直接通信できます。

–net=none は、Docker に新しいコンテナを分離されたネットワーク スタックに配置するように指示しますが、ネットワーク構成は行いません。その後はユーザーが自分で設定できます。

カスタムネットワーク

# --driver bridge ブリッジモード# --subnet 192.168.0.0/16 サブネットセグメント# --gateway 192.168.0.1 ゲートウェイ# mynet ネットワーク namedocker ネットワーク作成 --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

ここに画像の説明を挿入

カスタマイズされたネットワーク情報を表示します。

docker ネットワーク検査 mynet 

ここに画像の説明を挿入

カスタムネットワークにコンテナを作成する

docker run -d -P --name tomcat01-net-01 --net mynet tomcat
docker run -d -P --name tomcat01-net-02 --net mynet tomcat

ここに画像の説明を挿入

カスタム ネットワーク情報を再度確認します。新しく作成された 2 つのコンテナーがネットワークに追加されていることがわかります。

ここに画像の説明を挿入

コンテナ名を使用してコンテナ間のpingテストを行う

tomcat01-net-01 が tomcat01-net-02 に ping を送信します:

ここに画像の説明を挿入

tomcat01-net-02 が tomcat01-net-01 に ping を送信します:

ここに画像の説明を挿入

これで、コンテナは --link を使用せずに相互に ping を実行できるようになり、コンテナは相互に通信できるようになります。

2. ネットワーク接続

需要分析図

ここに画像の説明を挿入

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

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

ここに画像の説明を挿入

当然ですが、直接 ping を実行することはできません。まず tomcat01 コンテナを mynet ネットワークに接続する必要があります。

docker ネットワーク接続

docker network connect コマンドは、docker コンテナをネットワークに接続するために使用されます。コンテナ名またはコンテナ ID を使用できます。

使用法:

docker network connect [オプション] ネットワークコンテナ

tomcat01 コンテナを mynet ネットワークに接続します。

docker ネットワーク接続 mynet tomcat01

mynet のネットワーク情報を表示します: docker inspect mynet

ここに画像の説明を挿入

tomcat01 はすでに mynet ネットワークに接続されており、tomcat01-net-tomcat01 および tomcat01-net-tomcat02 も同様です。

この時点で、tomcat01 は mynet ネットワーク内の 2 つのコンテナに接続されています。3 つのコンテナは同じネットワーク内にあるため、当然相互に通信できます。

ここに画像の説明を挿入

1 つのコンテナ、2 つのネットワーク:

tomcat01 のメタデータを表示します: docker inspect tomcat01

ここに画像の説明を挿入

tomcat01 がカスタム mynet ネットワークに接続されると、2 つのネットワークが存在します。

Docker でのカスタム ネットワーク実装に関するこの記事はこれで終わりです。Docker ネットワークに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerのネットワークモードと設定方法
  • Docker は固定コンテナ IP アドレスを実現するためにカスタム ネットワークを作成します。
  • Docker Compose ネットワーク設定の説明

<<:  HTMLフロートの使用法の簡単な分析

>>:  CSS3は三角形の連続拡大効果を実現します

推薦する

Dockerイメージ解析ツールのダイブ原理解析

今日は、Docker イメージ、各レイヤーの内容を調べ、Docker/OCI イメージのサイズを縮小...

MySQLインデックスの使用に関するヒントと注意事項

1. インデックスの役割一般的なアプリケーション システムでは、読み取りと書き込みの比率は約 10:...

HTMLテーブルレイアウトの実践的な使い方の詳しい説明

テーブルはいつ使用されますか?最近では、Web ページの全体的なレイアウトにテーブルが使用されること...

MySQLの指定されたテーブルからデータをエクスポートする例の詳細な説明

指定されたテーブルからデータをエクスポートするMySQLの詳細な説明必要とする: 1. テーブルはす...

Vue プロジェクトに Electron を追加するための詳細なコード

1. package.jsonに追加する "メイン": "electr...

JavaScript配列重複排除の詳細な説明

目次1. アレイ重複排除2. 配列内のオブジェクトの重複排除3. 配列内の同じフィールドに基づいて別...

Linux での Makefile の書き方と使い方の詳細な説明

目次メイクファイルMakefile の命名とルールMakefile の仕組みMakefile変数Ma...

Doubanウェブサイトのウェブサイトコンテンツに小さな変更を加える方法

<br />読みやすさはウェブサイトにとって非常に重要な部分であり、ウェブサイトの核心と...

MySQLのどのフィールドがインデックスに適しているかについての簡単な説明

目次1 データベース インデックスを作成するための一般的なルールは次のとおりです。 2. 数千万件の...

Webデザインチュートリアル(2):模倣と盗作について

<br />前回の記事では、Webデザインの手順と方法を紹介しました。詳細については、前...

MySQL 8.0.11 圧縮版のインストールと設定方法のグラフィックチュートリアル

MySQL 8.0圧縮パッケージのインストール方法、詳細は次のとおりです知らせ:オペレーティング シ...

Nginx rtmp モジュールのコンパイル ARM バージョンの問題

目次1. 準備: 2. ソースコードのコンパイル1. 設定する2. コンパイルエラー3. ターゲット...

vue3を使用して人間と猫のコミュニケーションアプレットを実装する

目次序文プロジェクトを初期化するデザインコードの実装オンデマンドロードオーディオを再生録音長押しイベ...

IE6 フォントを定義できません: 13px サイズは無効です。IE6 は自動的に大きいフォント ソリューションを表示します。

数日前、Web ページのモジュールを調整していたとき、ページのフォント サイズを 13px に設定し...

Ubuntu 16.04にJenkinsをインストールするための詳細な手順

1. 前提条件JDKがインストールされましたecho $PATHソフトリンクを作成し、JDKのインス...