web-dev-qa-db-ja.com

DockerでのホストとNONEネットワークの使用は何ですか?

Dockerは、Dockerネットワークを理解しようとすると、次のネットワークを自動的に作成します。

# docker network ls 
NETWORK ID          NAME                DRIVER              SCOPE
67b4afa88032        bridge              bridge              local               
c88f997a2fa7        Host                Host                local               
1df2947aad7b        none                null                local               

bridge networkは、すべてのDockerインストールに存在するdocker0ネットワークを表すことを理解しました link。 から参照

誰かが他のネットワークを理解するのを手伝ってくれますかHostandnone、もし例で可能です。

15
Here_2_learn

デフォルトのDockerは3つのネットワークをサポートします

1)なし

このモードはコンテナーのIPを構成しませんも外部ネットワークにアクセスできません他のコンテナと同様。ループバックアドレスがあり、バッチジョブの実行に使用できます。

# docker run -it --network=none ubuntu:14.04 /bin/bash
root@66308c6686be:/# ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

# 
# docker inspect 66308c6686be | grep -i ipaddr
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "",

2)ホスト

このモードではコンテナがホストのネットワークスタックを共有し、ホストからのすべてのインターフェースがコンテナで使用可能になります。コンテナのホスト名は、ホストシステムのホスト名と一致します

# docker run -it --net=Host ubuntu:14.04 /bin/bash
root@labadmin-VirtualBox:/# hostname
labadmin-VirtualBox

IP構成もホストシステムのIP構成と同じ

root@labadmin-VirtualBox:/# ip addr | grep -A 2 eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:b5:82:2f brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
3: lxcbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default 
root@labadmin-VirtualBox:/# exit
exit

Host SYSTEM IP CONFIGURATION

# ip addr | grep -A 2 eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:b5:82:2f brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
3: lxcbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default 

Hostモードとnoneモードでは、直接構成されていませんが、デフォルトのブリッジネットワークを構成したり、独自のユーザー定義のブリッジネットワークを作成したりできます。

3)ブリッジモード

これは、Dockerのデフォルトのネットワークモードであり、ホストマシンの他のインターフェースへの接続を可能にするほか、コンテナー間の接続も可能にします

# docker run -it --network=bridge ubuntu:14.04 /bin/bash
root@58b0b1f18b2e:/# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:0c  
          inet addr:172.17.0.12  Bcast:0.0.0.0  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2668 (2.6 KB)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ブリッジモードでは、他のコンテナへのアクセスが可能です。

root@58b0b1f18b2e:/# ping 172.17.0.11
PING 172.17.0.11 (172.17.0.11) 56(84) bytes of data.
64 bytes from 172.17.0.11: icmp_seq=1 ttl=64 time=0.143 ms
64 bytes from 172.17.0.11: icmp_seq=2 ttl=64 time=0.050 ms

外部ネットワークへの接続。

root@58b0b1f18b2e:/# ping google.com 
PING google.com (216.58.197.46) 56(84) bytes of data.
64 bytes from maa03s20-in-f46.1e100.net (216.58.197.46): icmp_seq=1 ttl=51 time=16.9 ms

ホストマシンへの接続

root@labadmin-VirtualBox:~# ip a | grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0

root@58b0b1f18b2e:/# ping 10.0.2.15
PING 10.0.2.15 (10.0.2.15) 56(84) bytes of data.
64 bytes from 10.0.2.15: icmp_seq=1 ttl=64 time=0.113 ms

これらのdockerとともに、 [〜#〜] macvlan [〜#〜] ネットワークを提供し、単一の物理インターフェイス上に複数のレイヤー2(MAC)アドレスを構成することを可能にします。

21
Here_2_learn

ブリッジネットワーク:ブリッジはdocker0とも呼ばれるdockerのデフォルトネットワークです。これは、デフォルトのネットワークであり、NATファイアウォールを介してホストが接続されている物理ネットワークにブリッジします。ただし、すべてのコンテナがこのネットワークに接続して機能するため、このネットワークは問題ではありません。 。

実行中のコンテナがある場合は、次のようにしてブリッジネットワークを検査できます。

$ docker network inspect bridge

....
"Containers": {
        "145a2716d018c6fe8e9f93a81d88afd5a7437f0084ddb170c40761818e6d2f67": {
            "Name": "nginx",
            "EndpointID": "ea6cfa433f41e21e572f17473c8e5f5e5d82e9f19646e66fe23abda20a3836b8",
            "MacAddress": "02:42:ac:11:00:02",
            "IPv4Address": "172.17.0.2/16",
            "IPv6Address": ""
        }
    },

...

注:IPAM構成サブネットからのコンテナーに割り当てられた自動IPアドレスを確認できます。

ホストネットワーク:は、Dockerの仮想ネットワークをスキップし、コンテナーをホストインターフェイスに直接接続する特別なネットワークです。これは実際にお勧めしませんが、特定の状況では、ハイスループットネットワーキングのパフォーマンスを向上させることができます。

$ docker container run -it --net=Host nginx:Alpine /bin/bash

None Network:は、何も接続されていないマシン上のインターフェースを持つのと同じですが、独自に作成することができます。 noneネットワークは、コンテナーをコンテナー固有のネットワークスタックに追加します。そのコンテナにはネットワークインターフェースがありません。

$ docker container run -it --network=none nginx:Alpine /bin/bash

root@8cb783cd4509:/# ip -4 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
    inet 127.0.0.1/8 scope Host lo
       valid_lft forever preferred_lft forever
2
mohan08p

Dockerイメージがifconfigをサポートしているとします。イメージ名は「ubuntu/net」です。

次に、Hostnoneに対してdockerを実行します。

Sudo docker run -it --network=Host ubuntu/net
root@localhost:/# ifconfig
     docker0   Link encap:Ethernet  HWaddr xxxxxxxxxxxxx
               inet addr:x.x.x.x  Bcast:0.0.0.0  Mask:255.255.0.0
     eth0      Link encap:Ethernet  HWaddr xxxxxxxxxxxx
               inet addr:y.y.y.y  Bcast:  Mask:255.255.254.0


Sudo docker run -it --network=none ubuntu/net
root@localhost:/# ifconfig
     lo        Link encap:Local Loopback
               inet addr:127.0.0.1  Mask:255.0.0.0
1
AB.Huang