コンテナ仮想ネットワークの概要

6種類の名前空間:

UTS:ホスト名とドメイン名

ユーザー:ユーザー

マウント・ファイル・システムには、システムをマウント

IPC:プロセス間通信

PID:プロセスID

ネット:ネットワーク

ネットワーク名空間は主に隔離「スタック」と「ネットワーク機器」を達成するために、デバイスは、他の名前空間を使用するために単一の名前空間に単一に関連付けることができますされ、それぞれの名前空間を構成することが可能になり、デバイスを、表示されません外の世界と単一のIP通信、

ネットワーク機器は、ネットワーク機器に使用されていない場合でも、当社のコアスイッチをシミュレートすることができ、およびインタフェースシミュレーションの1組は、ネームスペースに接続し、スイッチに、

ドッキングウィンドウネットワーク

ドッキングウィンドウは、インストール後に自動的に3つのネットワークを提供します

[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
1d7c5fcc9190        bridge              bridge              local
b3ec0cad3ccc        host                host                local
2c634f206126        none                null                local

ブリッジは、ブリッジングネットワーク(ネット橋)、彼はマシン上の純粋なソフトウェアスイッチは、docker0と呼ばれる、両方のスイッチング機器を再生することができます作成​​し、LAN機器を再生することができますを表し、

ホストは、ホストネットワークの名前空間を使用するコンテナを表し

いずれも、ヌルが空手段ないカードを示していない、唯一のクローズドエンドは、LOインターフェースインターフェース

[root@localhost ~]# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:72:1c:ca brd ff:ff:ff:ff:ff:ff
    inet 10.192.45.116/21 brd 10.192.47.255 scope global dynamic enp0s3
       valid_lft 2875sec preferred_lft 2875sec
    inet6 fe80::a00:27ff:fe72:1cca/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:58:26:e8:42 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:58ff:fe26:e842/64 scope link 
       valid_lft forever preferred_lft forever
13: vethcc71d75@if12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP 
    link/ether 86:ad:5a:89:e7:46 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::84ad:5aff:fe89:e746/64 scope link 
       valid_lft forever preferred_lft forever
15: vethe5b386c@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP 
    link/ether 3a:43:31:9c:5b:0f brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::3843:31ff:fe9c:5b0f/64 scope link 
       valid_lft forever preferred_lft forever

二つの容器、コンテナ内の半分、私たちが作成したカードの2半分の1ペアif14マシンvethcc71d75する@ IF12とvethe5b386c @、我々は半分を持っています

[root@localhost ~]# docker container ls
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS               NAMES
bd141921d661        haoran/httpd:v0.2     "/bin/httpd -f -h /d…"   3 hours ago         Up 3 hours                              t2
e0f415751ebb        haoran/httpd:v0.1-1   "sh"                     3 hours ago         Up 3 hours                              t1

あなたがはっきりと見ることができるbrctlコマンドを使用します

[root@localhost ~]# yum -y install bridge-utils
[root@localhost ~]# brctl show
bridge name bridge id       STP enabled interfaces
docker0     8000.02425826e842   no      vethcc71d75
                            vethe5b386c

我々は2つのデバイスのvethcc71d75とvethe5b386cに関連したdocker0を見ることができます

ホスト上で、それぞれの開始と割り当てられたIP後にコンテナを作成しますiptablesのルールを生成します。

[root@iZ2zefbrqggvke1qw0kd0hZ ~]# iptables -t nat -vnL
Chain POSTROUTING (policy ACCEPT 8020 packets, 581K bytes)
 pkts bytes target     prot opt in     out     source               destination         
  274 17427 MASQUERADE  all  --  *      !docker0  172.18.0.0/16        0.0.0.0/0       

*任意のインターフェイスから来ます

彼らはdocker0から!Docker0来ていません

172.18.0.0/16このセグメントの元のアドレス

かかわらず、すべてのホストに到達0.0.0.0/0

送信元IPを置き換えるために、カードに送信されたIPデータでMASQUERADE、したがって、ダイヤルアップネットワークまたはIP割り当てDHCPケースを介するなど、それらの機会のためのIPを固定されていない、あなたはMASQUERADEを使用する必要があります。

おすすめ

転載: www.cnblogs.com/hao-ran/p/11493893.html