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を使用する必要があります。