基本的な概念:
コンテナを物理ネットワークに直接接続する必要がある場合は、Macvlan を使用できます。 Macvlan 自体はネットワークを作成しません。本質的には、まずホストの物理ネットワーク カードを「プロミスキャス モード」で動作させ、物理ネットワーク カードの MAC アドレスを無効にして、物理ネットワーク カードがレイヤー 2 ネットワーク内のすべてのトラフィックを受信できるようにします。次のステップは、この物理ネットワーク カード上に仮想ネットワーク カードを作成し、仮想ネットワーク カードに MAC アドレスを割り当てて、1 枚のカードを複数回使用できるようにすることです。物理ネットワークの観点から見ると、各仮想ネットワーク カードは個別のインターフェイスです。 Macvlan を使用する場合は、次の点に注意する必要があります。
プロジェクト環境:
プロジェクト運営: 例 1: macvlan クロスホスト単一ネットワークソリューション: ドッカー01: (1)ens33ネットワークカードのプロミスキャスモードを有効にし、ネットワークカードの複数の仮想インターフェースを有効にします。 [root@sqm-docker01 ~]# ip link set ens33 promisc on ##ネットワーク カードの状態を確認します。 [root@sqm-docker01 ~]# ipリンクshow ens33 (2)macvlanネットワークを作成する: [root@sqm-docker01 ~]# docker network create -d macvlan --subnet 172.16.100.0/24 --gateway 172.16.100.1 -o parent=ens33 mac_net1
(3)作成したネットワークに基づいてコンテナを実行します。 [root@sqm-docker01 ~]# docker run -itd --name box1 --ip 172.16.100.10 --network mac_net1 busybox docker02: (docker01と同じ操作) プロミスキャスモードを有効にする [root@sqm-docker02 ~]# ip link set ens33 promisc on [root@sqm-docker02 ~]# ipリンクshow ens33 // macvlan ネットワークを作成する [root@sqm-docker02 ~]# docker network create -d macvlan --subnet 172.16.100.0/24 --gateway 172.16.100.1 -o parent=ens33 mac_net1 //コンテナを実行します: [root@sqm-docker02 ~]# docker run -itd --name box2 --network mac_net1 --ip 172.16.100.20 busybox (4)2つのホスト上の2つのコンテナが相互に通信できることをテストします。 注記: ping が成功する理由は、両方のコンテナーが実際の ens33 ネットワーク カードに基づいているため、ホスト上の ens33 ネットワーク カードが相互に通信できる必要があるためです。この方法では IP アドレスのみを ping できますが、コンテナ名を ping することはできません。 例 2: macvlan クロスホスト マルチネットワーク ソリューション: (1)まずホストカーネルの8021qモジュールを確認します。 [root@sqm-docker01 ~]# modinfo 8021q ##モジュールが表示されない場合は、次のコマンドを実行してロードする必要があります。 [root@sqm-docker01 ~]# modprobe 8021q ルーティング転送を有効にする: [root@sqm-docker01 ~]# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf [root@sqm-docker01 ~]# sysctl -p ネット.ipv4.ip_forward = 1 (2)ネットワーク構成情報を変更する: ドッカー01: [root@sqm-docker01 ~]# cd /etc/sysconfig/network-scripts/ [root@sqm-docker01 ネットワークスクリプト]# ls [root@sqm-docker01 ネットワークスクリプト]# vim ifcfg-ens33 ens33 ネットワーク カードに基づいてサブネット カードを作成します。 [root@sqm-docker01 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33.10 #ネットワークカード名をカスタマイズ [root@sqm-docker01 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33.20 -p: 元の属性(権限)を保持することを意味します //ens33.10 ネットワーク カードを変更します。 [root@sqm-docker01 ネットワークスクリプト]# vim ifcfg-ens33.10 ##次のオプションのみを保持します。 //ens33.20 ネットワーク カードを変更します。 [root@sqm-docker01 ネットワークスクリプト]# vim ifcfg-ens33.20 設定は ens33.10 と同じですが、IP アドレスのみを変更する必要があります。 (3)サブネットカードを起動する。 [root@sqm-docker01 ネットワークスクリプト]# ifup ifcfg-ens33.10 [root@sqm-docker01 ネットワークスクリプト]# ifup ifcfg-ens33.20 //ネットワーク情報を表示 [root@sqm-docker01 network-scripts]# ifconfig (4)ens33.10とens33.20に基づいてmacvlanネットワークを作成します。 注: ネットワークセグメントによってネットワーク名が異なります [root@sqm-docker01 ~]# docker network create -d macvlan --subnet 172.16.200.0/24 --gateway 172.16.200.1 -o parent=ens33.10 mac_net10 [root@sqm-docker01 ~]# docker network create -d macvlan --subnet 172.16.210.0/24 --gateway 172.16.210.1 -o parent=ens33.20 mac_net20 (5)上記のネットワークに基づいて2つのコンテナを実行する。 [root@sqm-docker01 ~]# docker run -itd --name test1 --ip 172.16.200.10 --network mac_net10 busybox [root@sqm-docker01 ~]# docker run -itd --name test2 --ip 172.16.210.10 --network mac_net20 busybox docker02をデプロイします。 操作は基本的にdocker01と同じです。ネットワークセグメントは同じですが、ホストIPが異なることに注意してください。 #以下の操作については説明しません。 ルーティング転送を有効にする: [root@sqm-docker01 ~]# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf [root@sqm-docker01 ~]# sysctl -p ネット.ipv4.ip_forward = 1 [root@sqm-docker02 ネットワークスクリプト]# pwd /etc/sysconfig/ネットワークスクリプト [root@sqm-docker02 ネットワークスクリプト]# vim ifcfg-ens33 [root@sqm-docker02 ネットワークスクリプト]# cp -p ifcfg-ens33 ifcfg-ens33.10 [root@sqm-docker02 ネットワークスクリプト]# cp -p ifcfg-ens33 ifcfg-ens33.20 [root@sqm-docker02 ネットワークスクリプト]# vim ifcfg-ens33.10 [root@sqm-docker02 ネットワークスクリプト]# vim ifcfg-ens33.20 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 (6)コンテナがホスト間で通信できることをテストします。(注:VMwareを使用している場合は、VMware仮想マシンによる正常な通信を可能にするために、2つのホストのデフォルトのNATモードをブリッジモードに変更する必要があります) Test4 は test2 (同じネットワーク セグメント) と通信します。
----------------------Macvlan マルチネットワーク ホスト間通信の展開が完了しました--------------------- 拡張知識ポイント:
上記はネットワークスタックをデプロイする基本的な内容です。あまり使用しません。1つのコンテナ内のリソースを他のコンテナと共有できるようにするだけです。 以下もご興味があるかもしれません:
|
<<: MySQL Limitパフォーマンス最適化とページングデータパフォーマンス最適化の詳細な説明
>>: React はモバイル端末を構築するために antd-mobile+postcss を導入しました
EXPLAIN は、MySQL がインデックスを使用して選択ステートメントを処理し、テーブルを結合す...
原理ホバーしたときに要素に影を設定します: box-shadow で、通常とは異なるスタイルにします...
多くの場合、画像を表示する<a>タグのスタイルに遭遇しますが、タグ内にテキストがあり、そ...
データベース内のトランザクションとロックを表示するための一般的なステートメントトランザクションの待機...
目次ノードはMysqlに接続しますMySQLモジュールをインストールするMySQLに接続するよく使わ...
MySQL 5.7.18 のインストールと問題の概要。今日、新しい MySQL サーバーを導入しまし...
会社のビジネスシナリオでは、WeChat アカウント分割機能を使用する必要があります。公式 Web ...
ザビックス2019/10/12 チェンシン参照するhttps://www.zabbix.com/do...
SQLのlike文では、例えば SELECT * FROM user WHERE username...
1. MySQL 1.1 MySQLのインストールmysql-5.5.27-winx64 ダウンロー...
<br />ウェブサイトを科学的にデザインする: アイトラッキング研究から学ぶ 23 の...
同じサーバーで、Docker を使用して Mysql のマスター スレーブ同期設定をシミュレートしま...
目次序文ステップ1: セットアップと前方屈折ステップ2: 反射とフレネル方程式ステップ3: 多面屈折...
今回は、Google Chrome のタブバーのような、特殊な丸い角を持つナビゲーション バーのレイ...
序文Deepin のユーザー インターフェイスは、使用時に非常に見栄えがします。インターフェイス効果...