Docker には 4 つのネットワーク モードがあります。ホスト モード コンテナはホストの IP とポート番号を共有します。コンテナ モードはコンテナの IP アドレスとポートを共有します。なしモード コンテナにはネットワーク カードやその他の情報がありません。ブリッジ モードです。コンテナは相互に直接通信できます。
このチュートリアルの動作環境: linux7.3 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。
Docker は Linux ブリッジング (「Linux 仮想ネットワーク テクノロジ」を参照) を使用し、ホスト上の Docker コンテナ ブリッジ (docker0) を仮想化し、Docker がコンテナを起動するときにContainer-IP と呼ばれる IP アドレスは、Docker ブリッジのネットワーク セグメントに基づいてコンテナに割り当てられ、同時に Docker ブリッジは各コンテナのデフォルト ゲートウェイになります。同じホスト内のコンテナはすべて同じネットワーク ブリッジに接続されているため、コンテナはコンテナの Container-IP を介して直接通信できます。
Docker ブリッジはホストによって仮想化されており、実際のネットワーク デバイスではありません。外部ネットワークからアドレス指定することはできません。これは、外部ネットワークが直接 Container-IP を介してコンテナにアクセスできないことを意味します。コンテナーに外部からアクセスできるようにする必要がある場合は、コンテナーのポートをホストにマップ (ポート マッピング) できます。つまり、docker run がコンテナーを作成するときに -p または -P パラメーターを通じて有効にし、[ホスト IP] を使用します。 ] コンテナにアクセスする場合:[コンテナポート] コンテナにアクセスします。
4種類のネットワークモード
ホストモード
コンテナ起動時にホストモードを使用する場合、この場合、コンテナは独立したネットワーク名前空間を取得しませんが、同じネットワーク名前空間をホストと共有します。コンテナは独自のネットワーク カードを仮想化したり、独自の IP を設定したりすることはなく、ホストの IP とポートを使用します。ただし、ファイル システム、プロセス リストなど、コンテナーの他の側面は依然としてホストから分離されています。
ホスト モードを使用するコンテナは、ホストの IP アドレスを直接使用して外部と通信できます。コンテナ内のサービス ポートもホストのポートを使用できます。NAT は必要ありません。ホストの最大の利点は、ネットワークのパフォーマンスは比較的良好ですが、Docker ホストで既に使用されているポートは使用できなくなり、ネットワークの分離は良好ではありません。
ホスト モードは次のとおりです。
コンテナ モード
このモードでは、新しく作成されたコンテナと既存のコンテナは、ホストではなくネットワーク名前空間を共有します。新しく作成されたコンテナーは、独自のネットワーク カードを作成して独自の IP を構成しませんが、指定されたコンテナーと IP、ポート範囲などを共有します。同様に、ネットワークとは別に、2 つのコンテナはファイル システムやプロセス リストなどの他の側面でも分離されています。 2 つのコンテナのプロセスは、ネットワーク カード デバイスを介して通信できます。
コンテナ モード図:
none モード
none モードを使用すると、Docker コンテナは独自のネットワークを持ちます。ただし、 Namespace は、Docker コンテナーのネットワーク構成を実行しません。つまり、この Docker コンテナにはネットワーク カード、IP、ルーティングなどの情報がありません。ネットワーク カードの追加、IP の構成などを Docker コンテナに自分で行う必要があります。
このネットワーク モードでは、コンテナには lo ループバック ネットワークのみがあり、他のネットワーク カードはありません。 none モードは、コンテナの作成時に --network=none で指定できます。このタイプのネットワークはインターネットに接続できませんが、閉じたネットワークによりコンテナのセキュリティを確保できます。
なしモード図:
ブリッジ モード
Docker プロセスが開始されると、プロセスは次のように作成されます。ホスト docker0 という名前の仮想ブリッジ。このホストで開始された Docker コンテナは、この仮想ブリッジに接続されます。仮想ブリッジは物理スイッチと同様に機能するため、ホスト上のすべてのコンテナはスイッチを介してレイヤー 2 ネットワークに接続されます。
docker0 サブネットからコンテナーに IP を割り当て、docker0 IP アドレスをコンテナーのデフォルト ゲートウェイとして設定します。ホスト上に仮想ネットワーク カードの veth ペア デバイスのペアを作成します。Docker は、新しく作成されたコンテナーに veth ペア デバイスの一方の端を配置して eth0 (コンテナーのネットワーク カード) という名前を付け、もう一方の端は同様の名前でホスト内に配置します。 like vethxxx. このネットワーク デバイスに名前を付けて、docker0 ブリッジに追加します。 brctl show コマンドを使用して表示できます。
ブリッジ モードは docker のデフォルトのネットワーク モードであり、--net パラメータを記述しない場合はブリッジ モードになります。 docker run -p を使用すると、docker は実際に iptables で DNAT ルールを作成し、ポート転送機能を実装します。 iptables -t nat -vnL を使用して表示できます。
ブリッジ モードを次の図に示します。
推奨学習: 「docker ビデオ チュートリアル 」
以上がDocker にはいくつかのネットワーク モードがありますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。