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は三角形の連続拡大効果を実現します

推薦する

MySQL 8のパスワードを忘れた場合のベストな対処法の簡単な分析

序文MySQL に精通している読者は、MySQL が非常に迅速に更新されることに気付くかもしれません...

熟練デザイナーの7つの原則(1):フォントデザイン

まあ、あなたはデザインの達人かもしれませんし、あるいはそれは大げさすぎるかもしれませんが、少なくとも...

Windows Server 2012 リモート デスクトップ ライセンス サーバーがライセンスを提供できず、リモート セッションが切断される

本日、会社の内部サーバーにログインしたところ、リモートアクセスができませんでした。エラー メッセージ...

mysql8.x docker リモートアクセスの詳細な設定

目次環境条件エラーが発生しました回避策1. mysql dockerにログインする2. ルートパスワ...

CocosCreator で物理エンジン ジョイントを使用する方法

目次マウスジョイント マウスジョイント距離ジョイント距離ジョイントモータージョイント直動ジョイント変...

LinuxでMySQLのリモートアクセス権を有効にし、ファイアウォールでポート3306を開きます。

mysqlのリモートアクセス権を有効にするデフォルトでは、MySQL ユーザーにはリモート アクセ...

モバイルレイアウト用の動的REMの実装

ダイナミックレム1. まず、現在の長さの単位を紹介しましょうpx em Mの幅 / 漢字の幅 1em...

JavaScriptでシンプルなスクロールウィンドウを実装する

この記事では、スクロールウィンドウを実装するためのJavaScriptの具体的なコードを参考までに紹...

ボタンをクリックしてテキストを入力ボックスに変換し、保存をクリックしてテキスト実装コードに変換します。

ボタンをクリックしてテキストを入力ボックスに変換し、保存をクリックしてテキスト実装コードに変換します...

モバイル Web WAP には Bootstrap と jQuery Mobile のどちらを使用すべきか

問題を解決するBootstrap は、次の問題を解決する CSS フレームワークです。デバイス間での...

CSSのline-heightとheightの詳細な説明

最近、CSS インターフェースに取り組んでいるときに、line-height と height とい...

WeChat ミニプログラム ユーザー認証のベストプラクティス ガイド

序文WeChat アプレットを開発する際には、ユーザーの権限が必要なページを使用する必要があることが...

VirtualBox+Ubuntu16でKubernetesクラスタを構築する実装

目次Kubernetesについて基本的な環境の準備VirtualBoxをインストールするUbuntu...

Nginx プロセス スケジューリングの問題の詳細な説明

Nginx は、マスター プロセス (MasterProcess) と、同じ数のホスト CPU コア...

ネイティブ js でカスタム難易度のマインスイーパ ゲームを実装する

この記事の例では、マインスイーパゲームを実装するためのjsの具体的なコードを参考までに共有しています...