クラウドネイティブ 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

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

推薦する

IDCはクラウド支出が2025年までに1.3兆ドルに達すると予測

[[424292]] IDC は、2025 年までに世界の「クラウド」支出総額が 1.3 兆ドルに達...

WeChatマーケティングをうまく行う方法

Weibo マーケティングはもはや目新しいものではありません。多くの企業や草の根の Weibo グル...

GPU仮想化技術についての簡単な説明: GPUグラフィックスレンダリング仮想化

VDI ユーザー エクスペリエンスの問題AMDのGPU SRIOVやNvidiaのM60などの直接デ...

ウェブサイトのSEO最適化の効果をテストする方法の簡単な分析

ウェブサイトの最適化のプロセスでは、内部の最適化と外部リンクの構築に加えて、実際には見落とされがちな...

重量の軽減はサイト全体に影響しますか?

ウェブサイトの最適化は、非常に時間のかかるプロセスです。率直に言って、これは「大変で疲れる」仕事だと...

封鎖が強化されました!米国は、中国の顧客がアメリカのクラウドコンピューティング企業のコンピューティングパワーを利用してAIを開発することを阻止するだろう

米国政府は、進行中の米国貿易戦争の一環として、人工知能の開発と訓練に使用される高度なチップの中国への...

「江南春雲酒」ミニ番組が「自宅で過ごす旧正月」に温かさを添える

2021年の春節期間中、「自宅で新年を祝う」ための全国的な取り組みが開始されました。不完全な統計によ...

SEO はウェブサイトを救う最後の手段ではありません。目を覚ます時が来ました。

SEO の人気が高まるにつれ、ますます多くの企業が SEO に注目するようになっています。しかし、こ...

エッジコンピューティングとその驚くべき応用

エッジコンピューティングとは何ですか? エッジ コンピューティングは、モバイル コンピューティングと...

【クラウドネイティブ】HBase on K8s オーケストレーションの導入解説と実践運用

1. 概要HBase は列指向の分散データベースであり、その設計コンセプトは Google の Bi...

独自の ES クラスターをクラウドに移行するための完全なガイド

サービスをクラウドに移行する過程では、企業内で自社構築したミドルウェアなどのサービスの移行も必然的に...

今、電子商取引業界でビジネスを始めることは明るい未来をもたらすのでしょうか?

最近、A5 Webmaster ウェブサイトで、電子商取引のスタートアップに参加することが、今後 1...

クラウド管理: 知っておくべきことはすべてここにあります!

マルチクラウドの台頭により、新たな管理上の課題が生じています。クラウド サービス プロバイダー (C...

KubeMQ が Kafka の代わりとなるのはなぜですか?

[51CTO.com クイック翻訳]このような複雑な操作を実装するには、すべてのリクエストとアラート...

モグジエCの資金調達評価額は2億、Alexaランキングは半年間で5回ゼロにリセット

Mogujie の Alexa ランキングは半年間で 5 回もゼロにリセットされた (TechWeb...