クラウドネイティブ Docker コンテナ ホスト間指定 IP 通信

クラウドネイティブ Docker コンテナ ホスト間指定 IP 通信

オープンソースの詳細については、以下をご覧ください。

51CTO オープンソース基本ソフトウェアコミュニティ

​​https://ost..com​​

1. はじめに

1. 使用シナリオ

開発者にとっては、コンテナが広く使用されることで、プロジェクト用のシンプルなテスト環境を簡単に構築できます。場合によっては、プロジェクトをワンクリックで任意のマシンで実行できるようにするために、接続 IP やその他の情報を構成する必要はありません。そのため、コンテナの IP アドレスを事前に固定できることが期待されます。さらに、プロジェクトには複数のコンテナが関係し、複数のマシンにデプロイされる場合もあります。したがって、コンテナが固定 IP アドレスを使用してマシン間で通信できれば非常に便利です。

2. Dockerネットワーク

  • デフォルトでは、Docker コンテナは独自の独立したネットワーク スペースを持つ仮想システムです。
  • Docker をインストールすると、bridge、host、none の 3 つのネットワークが自動的に作成されます。
  • bridge: ブリッジモード。デフォルトでは、docker0 ブリッジ (172.17.0.0/16) が作成され、ホスト マシンからはアクセスできますが、外部マシンからは見えません。
  • ホスト: 共有ホスト ネットワーク モード。外部ホストはコンテナーと直接通信し、コンテナーには分離がありません。
  • none: ネットワーク モードを無効にします。
  • Dockerカスタムネットワーク
    Docker は、bridge、overlay、macvlan の 3 つのカスタム ネットワーク ドライバーを提供します。
  • ブリッジ ドライバーは、デフォルトのブリッジ ネットワーク モードに似ています。
  • オーバーレイと macvlan は、ホスト間ネットワークを作成するために使用されます。
  • カスタム ネットワーク セグメントとゲートウェイをサポートします。docker network create --subnet 172.77.0.0/24 --gateway 172.77.0.1 my_net。
  • Docker は、カスタム固定 IP アドレスをサポートせず、動的であるデフォルトの docker0 ネットワークを使用してコンテナを作成します。

3. ネットワークの使用をカスタマイズする

  1. ネットワーク セグメントをカスタマイズします。 docker network create --subnet=172.18.0.0/16 spark-net を実行します。
  2. ネットワーク ドライバー docker network create -d overlay --subnet 10.22.1.0/24 --gateway 10.22.1.1 spark-net-0 を指定します。
  3. コンテナに固定 IP を作成します。
 docker run --name cloud1 \
--netスパークネット--ip 172 .18.0.2 \
-hクラウド1 \
-それはUbuntu
docker run --name cloud1_0 \
--ネットワークspark-net-0 --ip 10 .22.1.26 \
-hクラウド1 \
-それはUbuntu

2. 実際の操作

1. オーバーレイネットワークモードの詳細説明

  • オーバーレイ ネットワークは現在、クロスノード コンテナー間のデータ転送およびルーティング ソリューションの主流です。
  • オーバーレイ ネットワーク モードは、ホスト ネットワーク上の複数の Docker ホスト間の分散ネットワークを実装し、コンテナー間の相互作用を可能にします。
  • オーバーレイ ネットワークとは、既存のネットワーク インフラストラクチャを変更することなく、特定の合意された通信プロトコルを介して IP メッセージの上にレイヤー 2 メッセージをカプセル化する新しいデータ形式を指します。

2. 領事サービスディスカバリー

  • Consul は、サービス検出、構成、オーケストレーションのための分散型、高可用性、マルチデータセンター対応のツールです。 Consul を使用すると、大規模なサービス指向アーキテクチャの迅速な導入、構成、保守が可能になります。
  • 単一ノードの Consul サービスをデプロイします (パブリック ネットワーク サーバーまたはデプロイされた他のコンテナーと通信できるホストを選択できます)。
 # イメージをプルする
docker pull プログラム/consul
# Consulコンテナを実行する
docker run -d -p 8500 :8500 -h consul --name consul --restart = always progrium/consul -server -bootstrap
# -h: はconsulのホスト名を示します
# --name consul: コンテナの名前を示します
# --restart=always は、docker サービスの開始時に起動できることを意味します。
# consul コンテナを実行します。サービスのデフォルト ポートは 8500 です。-p: は、コンテナーのポート 8500 をホストのポート 8500 にマッピングすることを意味します。
# -serve -bootstarp: クラスタ内でこれら2つのオプションを追加すると、マスターとして表示されることを示します。
  • 管理アクセスアドレス
    http://IP:8500/ui/#/dc1/kv/docker/nodes/ です。

3. docker構成を変更する

 # 通信が必要なすべてのマシンを変更する必要があります
:vim /etc/docker/daemon.json を実行します。
# 2つのパラメータを追加します: cluster-store と cluster-advertise
{
「レジストリミラー」 : [ 「https://xxxx.xxxx.aliyuncs.com」「https://registry.docker-cn.com」 ]、
「クラスターストア」 : 「consul://IP:8500」
「クラスターアドバタイズ」 : 「ens33:2376」
}
# cluster-store は、sonsul クラスターを構成するためのアクセス アドレスです。
# cluster-advertiseはブロードキャスト通信アドレスとポートです
# Dockerを再起動
systemctlデーモンリロード
systemctl docker を再起動します
#ポートアクセス拒否の問題がある場合は、ファイアウォールを直接オフにすることができます
#ファイアウォールを停止
systemctl 停止ファイアウォールd.service
# ファイアウォールの起動を無効にする
systemctl は、firewalld.service を無効にします。
# 開いているポートのリストを表示する
ファイアウォールコマンド--list -ports

4. 機械計画の練習

この記事では、192.168.17.150、192.168.17.151、192.168.17.152 の 3 つの仮想マシンを作成します。

5. オーバーレイネットワークを作成する

  • 実行するマシンの1つを選択します。たとえば、192.168.17.150で実行します。
 # オーバーレイネットワークを作成し、ネットワークセグメントとゲートウェイをカスタマイズする
# 異なるネットワークセグメントを指定することで、異なるサービスを分離できます
docker ネットワーク作成-dオーバーレイ--subnet 10 .22.1.0/24 --gateway 10 .22.1.1 spark-net
# 各マシンは作成されたネットワークをチェックします
docker ネットワークls
# 詳細情報を見る
docker ネットワーク検査 spark-net
  • ネットワークコマンドの削除
 # カスタムネットワークを削除する
docker ネットワークrm spark-net
# 接続がある場合は、まず切断してください
docker ネットワーク切断-f net-spark con1
  • 注意: たとえば、cloud1 マシンでは、docker network disconnect -f spark-net cloud2 を実行できますが、docker network disconnect -f spark-net cloud1 を実行しても機能しません。マシン間で切断する必要があります。

6. ホスト間でコンテナ認証を作成する

この記事では、前の記事を参考にして 3 つのコンテナーを作成します。 Docker を使用してビッグデータ プラットフォームを構築する場合は、「Hadoop、Spark、Hive の初期調査」を参照してください。

マシン 192.168.17.150 で実行されました。

 docker run --name cloud1 \
-p 50070 :50070 \
-p 8088 :8088 \
-p 8080 :8080 \
-p 7077 :7077 \
-p 9000 :9000 \
-p 16010 :16010 \
--ネットワークネットスパーク--ip 10 .22.1.26 \
-hクラウド1 \
--add -hostクラウド1:10.22.1.26 \
--add -hostクラウド2:10.22.1.27 \
--add -hostクラウド3:10.22.1.28 \
-itスパーク:v4

マシン 192.168.17.151 で実行されました。

 docker run --name cloud2 \
--ネットワークネットスパーク--ip 10 .22.1.27 \
-hクラウド2 \
--add -hostクラウド1:10.22.1.26 \
--add -hostクラウド2:10.22.1.27 \
--add -hostクラウド3:10.22.1.28 \
-itスパーク:v4

マシン 192.168.17.152 で実行されました。

 docker run --name cloud3 \
--ネットワークネットスパーク--ip 10 .22.1.28 \
-hクラウド3 \
--add -hostクラウド1:10.22.1.26 \
--add -hostクラウド2:10.22.1.27 \
--add -hostクラウド3:10.22.1.28 \
-itスパーク:v4

これは、3 つのコンテナ内の IP アドレス 10.22.1.26、10.22.1.27、10.22.1.28 にそれぞれ ping を実行することで確認できます。

3. よくある質問

1. エラー発生時の共通コマンド

  • ネットワークが変更された場合は、Dockerを再起動する必要があります
 systemctlデーモンリロード
systemctl docker を再起動します
  • ファイアウォールをオフにする
 # ファイアウォールを停止する
systemctl 停止ファイアウォールd.service
# ファイアウォールの起動を無効にする
systemctl は、firewalld.service を無効にします。
# 開いているポートのリストを表示する
ファイアウォールコマンド--list -ports
# 開いているポート
ファイアウォールコマンド--zone = public --add -port = 2379 /tcp --permanent
# リロード
ファイアウォール-cmd --reload

2. 指定されたIPでコンテナをカスタムネットワークにリンクします。

 #コンテナ cloud3 は IP 10.22.1.28 でオーバーレイ ネットワーク spark-net に接続されています
docker ネットワーク接続--ip 10 .22.1.28 spark-net cloud3

3. カスタムネットワークからコンテナを削除する

 # 現在のコンテナでは切断できないことに注意してください
# たとえば、コンテナ cloud2 を切断する必要がある場合は、コンテナ cloud1 で次のコマンドを実行する必要があります。
docker ネットワーク切断-f spark-net cloud2

4. マネージャーノードにアクセスできない

docker.service 構成 -H tcp://0.0.0.0:2376 --cluster-store=consul://121.4.138.199:8500 --cluster-advertise=ens33:2376 が正しく実行されません。理由は不明です。

オープンソースの詳細については、以下をご覧ください。

51CTO オープンソース基本ソフトウェアコミュニティ

​​https://ost..com​​.

<<:  Docker はビッグデータ プラットフォームを構築します: Hadoop、Spark、Hive

>>:  コンテナが攻撃されたときの対処方法: インシデント対応計画

推薦する

2024 年にクラウド コンピューティングのコストが急騰し、「クラウド インフレ」にどう対処するか

新しいレポートによると、クラウドコンピューティングのコスト増大は2024年までに多くの企業にとって大...

リスク管理:企業が責任を負わなければならない 5 種類のクラウドリスク

価格、規模、信頼性は、企業がクラウド コンピューティング プロバイダーを選択する際に考慮する重要な要...

WeChat時代のマーケティングの役割の分析

現在最も人気のアプリケーションはWeChatです。長い間QQの使い方を知らなかった超初心者でも簡単に...

iwfhosting - $8.99/KVM/2G メモリ/25g SSD/1T トラフィック/10Gbps 帯域幅/ロサンゼルス

iwfhosting は H4Y Technologies LLC 傘下のブランドです。主にホスティ...

Hongmeng HarmonyOS 開発中の分散フロー開発における一般的なエラーに関する FAQ

[[385509]]詳細については、以下をご覧ください。 51CTOとHuaweiが共同で構築したH...

検索エンジンの外部リンク要件は量から質へ変化

SEO の作業において、外部リンクは最も簡単に制御および操作できる要素であり、検索エンジンのランキン...

事例分析:中小規模の観光ウェブサイトを最適化する方法

BaiduによるQunarへの投資、AlibabaによるQyer.comへの投資、CtripとeLo...

提案: SEO資料を教科書として扱わないでください

SEO 初心者へのアドバイス: オンライン情報を SEO の教科書として扱わないでください。なぜ反対...

ultravps-20% オフ/4 コンピュータ ルーム/KVM/2.8 ユーロ/1g メモリ/30g ハード ディスク/1T トラフィック

ベテラン ホスティング プロバイダー ultravps.eu は、psychz.net でホストされ...

ユーザーの注目を減らすための手順 eコマースアプリのデザインから学んだ9つの成功のヒント

【はじめに】 買い手であっても売り手であっても、最も重要な点は、製品設計によってまず行動を起こせるか...

マイクロデータセンターはどのようにしてエッジコンピューティングを実現するのでしょうか?

エッジ コンピューティングは、機械学習、人工知能、IoT、ディープラーニングなどのさまざまな組み込み...

Hostus - ホスト評価限定割引コードで10%オフ

hostus.us は、Hostus Cat の限定 10% 割引コードを開設しました。もちろん、1...

yardvps-6.36$/Xen/768m メモリ/30g ハードディスク/1.5T トラフィック

Yardvps は長い間割引プロモーションをリリースしていませんでした。今回はアップグレード後に 2...

ラップ「言葉にできない」ノード - $6/kvm/512m メモリ/25g ハードディスク/500g トラフィック/ロサンゼルス/DDoS 保護/最適化された回線

ラップ「Unspeakable」のノードをチェックしてみましたが、情報を見つけることができませんでし...

ゲーミフィケーションの運用方法を詳しく解説!

製品のユーザー運用の成長には多くの問題があります。ユーザーの活動と維持を高めるために、サインイン機能...