Docker 4つのネットワークモード
その他
2020-04-22 13:43:04
訪問数: null
Docker 4つのネットワークモード
序文
- DockerはLinuxブリッジを使用し、ホストマシン上のDockerコンテナブリッジ(docker0)を仮想化します。Dockerがコンテナを起動すると、Dockerブリッジのネットワークセグメント(Container-IP)に従ってIPアドレスがコンテナに割り当てられ、Dockerブリッジは各コンテナのデフォルトゲートウェイ。同じホスト内のコンテナはすべて同じネットワークブリッジに接続されているため、コンテナはコンテナのContainer-IPを介して直接通信できます。
- Dockerブリッジはホストによって仮想化されており、実際のネットワークデバイスではありません。外部ネットワークはアドレス指定できません。これは、外部ネットワークが直接Container-IP経由でコンテナにアクセスできないことも意味します。コンテナーが外部アクセスにアクセスできるようにしたい場合は、コンテナーポートをホストホストにマップできます(ポートマッピング)。つまり、コンテナーの作成時に-pまたは-Pパラメーターによってdocker runが有効になり、コンテナーにアクセスするときに[ホストIP]が有効になります。 【コンテナポート】コンテナにアクセスします。
1. 4つのネットワークモード
Dockerネットワークモード |
構成 |
解説 |
ホストモード |
–net = host |
コンテナーとホストはネットワーク名前空間を共有します。 |
コンテナモード |
–net = container:NAME_or_ID |
コンテナーと別のコンテナーは、ネットワーク名前空間を共有します。kubernetesのポッドは、ネットワーク名前空間を共有する複数のコンテナです。 |
なしモード |
–net = none |
コンテナには独立したネットワーク名前空間がありますが、vethペアとブリッジ接続の割り当て、IPの構成などのネットワーク設定はありません。 |
ブリッジモード |
–net = bridge |
(デフォルトはこのモードです) |
2.ホストモード
- コンテナーの起動時にホストモードが使用されている場合、コンテナーは独立したネットワーク名前空間を取得せず、ホストマシンとネットワーク名前空間を共有します。コンテナは、独自のネットワークカードを仮想化したり、独自のIPを構成したりするのではなく、ホストのIPとポートを使用します。ただし、ファイルシステムやプロセスリストなどのコンテナーの他の側面は、ホストから分離されています。
- ホストモードを使用するコンテナは、ホストのIPアドレスを直接使用して外部と通信できます。コンテナ内のサービスポートもホストのポートを使用できます。NATは不要です。ホストの最大の利点は、ネットワークパフォーマンスが向上することですが、Dockerホストはすでに使用されているポートは使用できなくなり、ネットワークの分離は良好ではありません。
3.コンテナーモード
- このモードは、新しく作成されたコンテナーが、ホストではなく既存のコンテナーとネットワーク名前空間を共有することを指定します。新しく作成されたコンテナーは、独自のネットワークカードを作成して独自のIPを構成するのではなく、指定されたコンテナーとIPおよびポート範囲を共有します。同様に、ネットワークに加えて、ファイルシステムやプロセスリストなどの2つのコンテナーが分離されます。2つのコンテナーのプロセスは、loネットワークカードデバイスを介して通信できます。
4.なしモード
- noneモードでは、Dockerコンテナーには独自のネットワーク名前空間がありますが、Dockerコンテナーのネットワーク構成は実行されません。つまり、このDockerコンテナには、ネットワークカード、IP、ルーティング、その他の情報が含まれていません。ネットワークカードを追加し、DockerコンテナーのIPを自分で構成する必要があります。
- このネットワークモードでは、コンテナーにはloループバックネットワークのみがあり、他のネットワークカードはありません。noneモードは、コンテナーの作成時に–network = noneで指定できます。このタイプのネットワークを接続する方法はなく、閉じたネットワークはコンテナのセキュリティを保証できます。
5.ブリッジモード
- Dockerプロセスが開始すると、docker0という名前の仮想ブリッジがホスト上に作成され、このホスト上で開始されたDockerコンテナーがこの仮想ブリッジに接続されます。仮想ブリッジは物理スイッチと同様に機能するため、ホスト上のすべてのコンテナーはスイッチを介してレイヤー2ネットワークに接続されます。
- docker0サブネットからコンテナーにIPを割り当て、docker0 IPアドレスをコンテナーのデフォルトゲートウェイとして設定します。ホスト上に仮想ネットワークカードのvethペアデバイスのペアを作成します。Dockerはvethペアデバイスの一方の端を新しく作成されたコンテナーに配置し、それにeth0(コンテナーのネットワークカード)という名前を付け、もう一方の端はvethxxxのような同様の名前でホストに配置されます名前を付けて、このネットワークデバイスをdocker0ブリッジに追加します。brctl showコマンドを使用して表示できます。
- ブリッジモードは、Dockerのデフォルトのネットワークモードです。–netパラメーターを記述しない場合は、ブリッジモードです。docker run -pを使用すると、dockerは実際にiptablesでDNATルールを作成し、ポート転送機能を実装しました。iptables -t nat -vnLを使用して表示できます。
公開された140元の記事
・
ウォン称賛49
・
ビュー10000 +
転載: blog.csdn.net/double_happy111/article/details/105579483