2016-12-11 3 views
3

Пытаясь понять Docker сети, Docker автоматически создает следующую сеть:Что такое использование сети HOST и NONE в докере?

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

я понял, что моста сеть представляет docker0 сеть во всех установках Docker, имея в виде от link.

Могут кто-то помогает мне в понимании других сетей, хозяин и нет, если возможно с примерами.

+0

читать [это] (https://docs.docker.com/engine/userguide/networking/) –

+0

я тоже называют по той же ссылке, но я ищу некоторые примеры, чтобы лучше понять. –

ответ

6

Docker по умолчанию поддерживает 3 сети:

1) None:

Этот режим не будет настроить любой IP для контейнера и не имеет доступа к внешней сети, а также для других контейнеров. Он имеет адрес loopback и может использоваться для запуска пакетных заданий.

# docker run -it --network=none ubuntu:14.04 /bin/bash 
[email protected]:/# 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 
[email protected]:/# hostname 
labadmin-VirtualBox 

Даже конфигурация IP такой же, как IP конфигурации хост-системы

[email protected]:/# 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 
[email protected]:/# 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 

В хостом и ни один режиме, не сконфигурированы напрямую, но сеть моста по умолчанию может быть сконфигурирована так же, как и создавать собственные пользовательские сети мостов.

3) Режим моста

Это Docker сети по умолчанию режим, который позволит подключение к другим интерфейсам хост-машины, а также среди контейнеров.

# docker run -it --network=bridge ubuntu:14.04 /bin/bash 
[email protected]:/# 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) 

Доступность других контейнеров можно в режиме моста.

[email protected]:/# 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 

подключения к внешней сети.

[email protected]:/# 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 

Подключение к хост-машине

[email protected]:~# 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 

[email protected]:/# 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 

Наряду с этим Докер обеспечивает MACVLAN сеть, которая позволяет конфигурировать многослойный 2 (MAC) адреса на одном физическом интерфейсе.

+0

Хороший ответ. Я бы добавил, что MACVLAN и другие драйверы VLAN (IPVLAN работает) требуют поддержки и конфигурации VLAN на маршрутизаторе. И если вы хотите, чтобы DNS-сервис обнаруживал другие контейнеры, вам нужно создать новую сеть мостов и подключить к ней контейнеры, а не использовать мостовую сеть по умолчанию, которая не позволяет встроенное обнаружение DNS. – BMitch

+0

Спасибо за поддержку @BMitch, а также за предоставление дополнительной информации .. –

0

Пусть ваш Docker поддержка изображения IFCONFIG, имя изображения "убунту/сеть"

Затем запустите докер для хозяина & ни:

sudo docker run -it --network=host ubuntu/net 
[email protected]:/# 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 
[email protected]:/# ifconfig 
    lo  Link encap:Local Loopback 
       inet addr:127.0.0.1 Mask:255.0.0.0 
0

Мостовая сеть: Мост - это сеть по умолчанию в докере, которую также называют докером0. Это сеть по умолчанию, соединяющая брандмауэр 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": "" 
     } 
    }, 

...

Примечание: Вы можете видеть, что автоматический IP-адрес, назначенный контейнер, который из подсеть конфигурации IPAM.

Host Network: - это специальная сеть, которая пропускает виртуальную сеть докеров и прикрепляет контейнер непосредственно к интерфейсу хоста. Это действительно не рекомендуется, но в определенных ситуациях может улучшить производительность сетей с высокой пропускной способностью, а в других вы потеряете из-за нескольких преимуществ контейнерной обработки.

$ docker container run -it --net=host nginx:alpine /bin/bash 

None Сеть: отчасти эквивалентно тому, что интерфейс на вашем компьютере, не attched к чему-либо, но мы можем создать наши собственные. Сеть none добавляет контейнер в сетевой стек контейнера. В этом контейнере отсутствует сетевой интерфейс.

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

[email protected]:/# 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 
Смежные вопросы