基本的な概念:
コンテナを物理ネットワークに直接接続する必要がある場合は、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 を導入しました
Flexの基本概念フレックス レイアウト (フレックスはフレキシブル ボックスの略)、エラスティック...
1. MySQLデータベースnacos_configを作成する2. データベース nacos_con...
1. HTML の要素とタグ<br />要素は、1 つのタグまたは 1 組のタグによって...
初期のコンピュータでは ASCII 文字しか使用できませんでしたが、コンピュータのアプリケーションの...
この記事では、ソシュールの言語哲学などの理論に基づいて、CSS の class 属性は不要であると主...
目次背景インスピレーションは人生から生まれる速達配送の最適化原則GaussDB の最適化 (MySQ...
1. VMware Workstation 上の Linux: 1. ソースの更新(オプション) v...
目次1. オプションとは何ですか? 2. 含まれる属性3. エントリー属性エルデータ方法コンポーネン...
目次1. シナリオ2. IJavaScriptShadowboxを実装する2.1 メインスレッドの実...
過去の経験から言うと、タスクを完了した後にメモを取るのは良い習慣です。インストール環境はUbuntu...
履歴コマンドを表示し、指定されたコマンドを実行します owen@owen:~/owen/softwa...
目次MySQL ログファイルバイナリログBinlogログがオンになっていますログ記録を有効にする方法...
1. Docker とは何ですか?仮想マシンについては誰もが知っています。Windows に Li...
Linux システムのシャットダウン コマンドは何ですか? Liangxu Tutorial Net...
前回の記事では、Vue で画像の切り抜きや拡大・縮小、回転を実現する方法を紹介しました。今回は、アイ...