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

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

推薦する

RightScale 2019 クラウドの現状レポート: プライベート クラウドは不調、パブリック クラウドは急成長

世界的なクラウド管理サービスプロバイダーである RightScale が、毎年恒例のクラウドの現状レ...

IBMは座って雲が上がり、青が白に変わるのを眺める

歴史が川であるならば、過去 100 年間は最も流れが激しい時期です。ここで突然加速し、巨大な波が広大...

Oracle Analytics Cloudが多くの新しいイノベーションをリリース

自動化された分析ワークフローは、企業がより多様な方法でデータを操作して予測を行うのに役立ちます。 O...

ホット検索はWeiboの弱点となるか?

最近、ソーシャルイベントが次々と流行しています。Weiboのゼロ閾値により、誰もがこれらのイベントの...

香港データセンターのpqhostingの1Gbps帯域幅無制限トラフィックVPSの簡単なレビュー

香港には大きな帯域幅を持つ VPS はほとんどなく、香港には大きな帯域幅と無制限のトラフィックを備え...

検索エンジンの激動の時代に、ウェブマスターは冷静に対応すべき

最近、百度のアルゴリズムが調整され、多くのウェブサイトがさまざまなレベルで変化を経験しました。一部の...

SEO 職場体験シーズン 3: 才能を発揮する

4月27日、ShitouはSEO初心者向けに「SEO職場体験シーズン2:実践してみる」というタイトル...

ウェブマスターの推奨事項: ロングテールワード拡張ツールは「ウェブサイト」に大いに役立ちます

多くの SEO 担当者がウェブサイトのトラフィックについて心配していると思います。実際、ウェブサイト...

.NET とクラウド コンピューティング: 統合アプリケーションとベスト プラクティス

クラウド コンピューティングの急速な発展に伴い、クラウド コンピューティングが提供する弾力性、拡張性...

virpus-50% オフ/Xen/512MB RAM/24USD/年/ロサンゼルス

2006 年に設立された VPS 販売業者である virpus は、XEN ベースの仮想 VPS を...

集団的な躍進の後、中国のパブリッククラウドの次のステップは何でしょうか?

International Data Corporation (IDC) が最近発表したレポートによ...

onetechcloud: 新学期特別オファー、VPS は 21 元から、オプションで香港 CN2/香港 CMI/米国 CN2/米国 CN2+High Defense

新学期が始まります。OneTechCloud は、9 月の新学期に特別割引をご用意しました。特に学生...

ウェブサイトの内部リンクと最適化に関する簡単な説明

内部リンクの最適化は、水を水路に流すようなものです。適切に行われなければ、損失率は非常に高くなります...

Baidu Webmaster Platformの記事「外部リンク判定」の戦略的分析

2013年4月25日、Baidu Webmaster Platformは「外部リンク判定」という記事...

海外サーバー:安くて信頼できる商人が推奨

専用サーバーは、どのように構成しても、リソースの面で VPS よりも信頼性が高く、独立した制御性も高...