コンテナの起動時に net=none を指定します。これは、起動されたコンテナにネットワーク情報が構成されていないことを示します。起動後に表示されるコンテナ内の情報は次のとおりです。 eth0 インターフェイスはありません。 lo ループバック インターフェイスは 1 つだけです。しかし、依然として独自の独立したネットワーク名前空間を持っています。
root@10-10-63-106 ~]# docker run -i -t --rm--net=none centos6.3-base-v2 /bin/bash
[root@4685a85d0e11/]# ifconfig
loLink encap:ローカル ループバック
inet addr:127.0.0.1Mask:255.0.0.0
inet6 addr:::1/128 スコープ:ホスト
UP LOOPBACK RUNNINGMTU:65536 メトリック:1
RX パケット:0 エラー:0 ドロップ:0 オーバーラン:0 フレーム:0
TX パケット:0 エラー:0 ドロップ:0 オーバーラン:0 キャリア:0
衝突:0 txqueuelen:0
RX バイト:0 (0.0 b) TX バイト:0(0.0 b)
docker run -i -t --rm --net=nonefrankzfz/centos6.3-base-v1 /bin/bash
[root@0861fd7f405a /]# ifconfig
loLink encap:ローカルループバック
inet addr:127.0.0.1Mask:255.0.0.0
inet6 addr:::1/128 Scope:Host
UP LOOPBACK RUNNINGMTU:65536 Metric:1
RXパケット:0 エラー:0 ドロップ:0 オーバーラン:0フレーム:0
TX パケット:0 エラー:0 ドロップ:0 オーバーラン:0 キャリア:0
衝突:0 txqueuelen:0
RX バイト:0 (0.0 b) TX バイト:0(0.0 b)
Getコンテナーのプロセス番号
[root@10-10-63-106 ~]# docker Inspection -f'{{.State.Pid}}' 0861fd7f405a
695
[root@10-10-63 -106 ~]# docker Inspection -f'{{.State.Pid}}' 4685a85d0e11
638
ネットワーク名前空間のトレースファイルを作成します
[root@10-10-63-106 ~]# mkdir - p/var /run/netns
[root@10-10-63-106 ~]# ln -s/proc/695/ns/net /var/run/netns/695
[root@10-10- 63-106 ~]# ln -s/proc/638/ns/net /var/run/netns/638
ピア インターフェイスのペアを作成します。A は Container_ID=0861fd7f405a のインターフェイス名として指定され、B は Container_ID=0861fd7f405a として指定されます。 Container_ID=4685a85d0e11 とルート情報を追加すると、そのネクストホップはすべてピア IP アドレスを指します。
[root@10-10-63-106 ~]# ip link add A typeveth ピア名 B
[root@10-10-63-106 ~]# ip link set A netns695
[root@10- 10-63-106 ~]# ip netns exec 695 ipaddr add 10.1.1.1/32 dev A
[root@10-10-63-106 ~]# ip netns exec 695 iplink set A up
[root@10 -10-63-106 ~]# ip netns exec 695 iproute add 10.1.1.2/32 dev A
[root@0861fd7f405a /]# ifconfig
ALink encap:Ethernet HWaddrCA:39:26:CD:24:BD
inet addr:10.1.1.1 Bcast:0.0.0.0Mask:255.255.255.255
UP BROADCAST MULTICASTMTU:1500 メトリック:1
RX パケット:0 エラー:0 ドロップ:0 オーバーラン:0 フレーム:0
TX パケット: 0 エラー:0 ドロップ:0 オーバーラン:0 キャリア:0
衝突:0 txqueuelen:1000
RX バイト:0 (0.0 b) TX バイト:0(0.0 b)
loLink encap:ローカル ループバック
inet アドレス:127.0.0.1マスク:255.0.0.0
inet6 アドレス:::1/128 スコープ:ホスト
UP LOOPBACK RUNNINGMTU:65536 メトリック:1
RX パケット:0 エラー:0 ドロップ:0 オーバーラン:0 フレーム:0
TXパケット:0エラー:0ドロップ:0オーバーラン:0キャリア:0
衝突:0txqueuelen:0
RXバイト:0 (0.0 b) TXバイト:0(0.0 b)
[root@10-10-63-106 ~]# ip link set B netns638
[root@10-10-63-106 ~]# ip netns exec 638 ip addr add 10.1.1.2/32 devB
[root @10-10-63-106 ~]# ip netns exec 638 iplink set B up
[root@10-10-63-106 ~]# ip netns exec 638 iproute add 10.1.1.1/32 dev B
[ root@4685a85d0e11 /]# ifconfig
BLink encap:Ethernet HWaddrFE:38:13:D9:2F:87
inet addr:10.1.1.2Bcast:0.0.0.0Mask:255.255.255.255
inet6 addr: : : fc38:13ff:fed9:2f87/64 スコープ:Link
UP ブロードキャスト実行中 MULTICASTMTU:1500 メトリック:1
RX パケット:8 エラー:0 ドロップ:0 オーバーラン:0 フレーム:0
TX パケット:8 エラー:0ドロップ:0 オーバーラン:0 キャリア:0
衝突:0 txqueuelen:1000
RX バイト:648 (648.0 b) TX バイト:648 (648.0 b)
loLink encap:ローカル ループバック
inet addr:127.0.0.1Mask:255.0.0.0
inet6 addr:::1/128 Scope:Host
UP LOOPBACK RUNNINGMTU:65536 Metric:1
RXパケット:0 エラー:0 ドロップ:0 オーバーラン:0フレーム:0
TX パケット:0 エラー:0 ドロップ:0 オーバーラン:0 キャリア:0
衝突:0 txqueuelen:0
RX バイト:0 (0.0 b) TX バイト:0(0.0 b)
at一方のコンテナの IP アドレスを他方のコンテナに ping して、2 つのコンテナが通信できることを確認します。
[root@4685a85d0e11/]# ping 10.1.1.1
PING 10.1.1.1 (10.1.1.1) 56(84) bytes ofdata.
10.1.1.1 からの 64 バイト: icmp_seq=1 ttl=64time=0.08 4ミリ秒
10.1.1.1 からの 64 バイト: icmp_seq=2 ttl=64time=0.071 ms ttl=64time =0.069 ms
^C
--- 10.1.1.1 ping 統計 ---
送信パケット 4、受信パケット 4、0 % パケット損失、時間 3505 ミリ秒
rtt min/avg/max/mdev =0.069/0.074 /0.084/0.008 ミリ秒
参考文献:
https://docs.docker.com/articles/networking/
http://www.bkjia.com/PHPjc/1086426.html
www.bkjia.com