Docker Networking 101

Давайте изучим Docker Networking ….


В докере в основном пять сетей – мост, хост, оверлей, нет и macvlan.

Сеть моста является сетью по умолчанию в докере. Введение в эти сети было дано в моей предыдущей статье об архитектуре докеров.

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

Всякий раз, когда вы запускаете Docker-контейнер, сетевой вызов моста по умолчанию docker0 связывается с контейнером, если не указана другая сеть. Например, когда я запускаю команду ifconfig, вы получите подробную информацию о сети типа моста docker0 вместе с другими сетевыми данными.

[Электронная почта защищена]: ~ $ ifconfig

docker0: flags = 4099 mtu 1500

инет 172.17.0.1 маска сети 255.255.0.0 широковещательная 172.17.255.255

эфир 02: 42: f6: 59: 4a: 5f txqueuelen 0 (Ethernet)

RX-пакеты 0 байтов 0 (0,0 B)

RX ошибок 0 отброшено 0 переполнений 0 кадра 0

Пакеты TX 0 байтов 0 (0,0 B)

Ошибки TX 0 отброшены 0 переполнений 0 несущих 0 коллизий 0

enp0s3: flags = 4163 mtu 1500

инет 10.0.2.15 маска сети 255.255.255.0 широковещательная 10.0.2.255

inet6 fe80 :: 763e: c0b4: 14df: b273 с префиксом 64 scopeid 0x20

эфир 08: 00: 27: 68: 64: 9a txqueuelen 1000 (Ethernet)

RX-пакеты 2157 байт 2132896 (2,1 МБ)

RX ошибок 0 отброшено 0 переполнений 0 кадра 0

Пакеты TX 952 байта 151610 (151,6 КБ)

Ошибки TX 0 отброшены 0 переполнений 0 несущих 0 коллизий 0

enp0s8: flags = 4163 mtu 1500

инет 192.168.56.102 маска сети 255.255.255.0 широковещательная 192.168.56.255

inet6 fe80 :: 20a: 6c57: 839d: 2652 с префиксом 64 scopeid 0x20

эфир 08: 00: 27: 53: 45: 82 txqueuelen 1000 (Ethernet)

RX-пакеты 10597 байт 1497146 (1,4 МБ)

RX ошибок 0 отброшено 0 переполнений 0 кадра 0

Пакеты TX 12058 байтов 1730219 (1,7 МБ)

Ошибки TX 0 отброшены 0 переполнений 0 несущих 0 коллизий 0

lo: flags = 73 mtu 65536

Инет 127.0.0.1 маска сети 255.0.0.0

inet6 :: 1 префиксный 128 scopeid 0x10

loop txqueuelen 1000 (локальная петля)

RX-пакеты 1196 байт 105396 (105,3 КБ)

RX ошибок 0 отброшено 0 переполнений 0 кадра 0

Пакеты TX 1196 байт 105396 (105,3 КБ)

Ошибки TX 0 отброшены 0 переполнений 0 несущих 0 коллизий 0

Сеть листинга

Запустите команду ls, чтобы проверить все сети, работающие на текущем хосте. Как видите, в настоящее время существует семь сетей, включая мост, хост и ни одну, которые создаются автоматически при установке Docker. В зависимости от контейнеров, которые я запускал в прошлом, также есть детали других пользовательских сетей..

[Электронная почта защищена]: ~ $ docker network ls

ИМЯ СЕТИ ИМЯ ДРАЙВЕР ОБЛАСТЬ ПРИМЕНЕНИЯ

fec751a6ae21 мост мост местный

21943b20735d docker_gwbridge мост местный

f51d1f3379e0 хост хост локальный

ppp8i7tvrxa0 входной оверлейный рой

ba68f73abeed mean-app_default мост местный

d466e75d86fa mean_default мост местный

5e5d9a192c00 нет ноль местный

Проверка сети

Вы можете запустить команду inspect, чтобы получить все подробности о типе сети. Он предоставляет информацию о сети, которая включает имя, идентификатор, время создания, область действия, драйвер, сведения о конфигурации, такие как адрес подсети и шлюза. Я также сообщу детали контейнера, если какой-либо контейнер запущен и работает. В противном случае он вернет пустую строку.

[Электронная почта защищена]: ~ $ docker сеть проверяет мост

[

{

"имя": "мост",

"Я бы": "fec751a6ae21f20a06cdc6eb823e773caec063b6bf9a388016594e59fd1db475",

"созданный": "2019-08-01T10: 30: 27.595054009-04: 00",

"Объем": "местный",

"Водитель": "мост",

"EnableIPv6": ложный,

"ИГУМ": {

"Водитель": "дефолт",

"Опции": значение NULL,

"конфиг": [

{

"Subnet": "172.17.0.0/16",

"шлюз": "172.17.0.1"

}

]

},

"внутренний": ложный,

"Навесной": ложный,

"вход": ложный,

"ConfigFrom": {

"сеть": ""

},

"ConfigOnly": ложный,

"Контейнеры": {},

"Опции": {

"com.docker.network.bridge.default_bridge": "правда",

"com.docker.network.bridge.enable_icc": "правда",

"com.docker.network.bridge.enable_ip_masquerade": "правда",

"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",

"com.docker.network.bridge.name": "docker0",

"com.docker.network.driver.mtu": "1500"

},

"Этикетки": {}

}

]

Создать сеть

Используя команду create, вы можете создать свою собственную сеть. Вы должны упомянуть тип драйвера с флагом –driver, в приведенном ниже примере я использую тип моста.

[Электронная почта защищена]: ~ $ docker network create –driver bridge geekflare_network

08e0da91f6de6c640b1b6f8a8602973f310b8ee9b04961389b7dfda842ccc409

Запустите команду ls, чтобы проверить, создана ли сеть.

[Электронная почта защищена]: ~ $ docker network ls

ИМЯ СЕТИ ИМЯ ДРАЙВЕР ОБЛАСТЬ ПРИМЕНЕНИЯ

fec751a6ae21 мост мост местный

21943b20735d docker_gwbridge мост местный

08e0da91f6de geekflare_network bridge local

f51d1f3379e0 хост хост локальный

ppp8i7tvrxa0 входной оверлейный рой

ba68f73abeed mean-app_default мост местный

d466e75d86fa mean_default мост местный

5e5d9a192c00 нет ноль местный

Теперь я буду запускать Docker-контейнер в сети, которую я создал. Я запускаю простой серверный сервер apache в приведенной ниже команде.

[Электронная почта защищена]: ~ $ docker run -it -d –network = geekflare_network httpd

38a0b0646da1a0045afcf7aa0cd6228b851f74107a6718bb19d599e896df1002

Выполнение команды inspect для проверки всей информации geekflare_network. На этот раз вы можете найти детали контейнера в этой проверке вывода; имя контейнера determined_dubinsky.

[Электронная почта защищена]: ~ $ docker network проверяет geekflare_network

[

{

"имя": "geekflare_network",

"Я бы": "08e0da91f6de6c640b1b6f8a8602973f310b8ee9b04961389b7dfda842ccc409",

"созданный": "2019-09-03T13: 56: 36.244295204-04: 00",

"Объем": "местный",

"Водитель": "мост",

"EnableIPv6": ложный,

"ИГУМ": {

"Водитель": "дефолт",

"Опции": {},

"конфиг": [

{

"Subnet": "172.21.0.0/16",

"шлюз": "172.21.0.1"

}

]

},

"внутренний": ложный,

"Навесной": ложный,

"вход": ложный,

"ConfigFrom": {

"сеть": ""

},

"ConfigOnly": ложный,

"Контейнеры": {

"38a0b0646da1a0045afcf7aa0cd6228b851f74107a6718bb19d599e896df1002": {

"имя": "determined_dubinsky",

"EndpointID": "30d252720e0f381ba01d6f5414525dff8587abcf3c4920100f112898a52c8a23",

"MAC-адрес": "02: 42: AC: 15: 00: 02",

"IPv4-адрес": "172.21.0.2/16",

"IPv6Address": ""

}

},

"Опции": {},

"Этикетки": {}

}

]

Отключить сеть

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

[Электронная почта защищена]: ~ $ docker сеть отключена geekflare_networktermin_dubinsky

Эта сеть больше не будет работать с контейнеромtermin_dubinsky; поле контейнера будет пустым.

[Электронная почта защищена]: ~ $ docker network проверяет geekflare_network

[

{

"имя": "geekflare_network",

"Я бы": "08e0da91f6de6c640b1b6f8a8602973f310b8ee9b04961389b7dfda842ccc409",

"созданный": "2019-09-03T13: 56: 36.244295204-04: 00",

"Объем": "местный",

"Водитель": "мост",

"EnableIPv6": ложный,

"ИГУМ": {

"Водитель": "дефолт",

"Опции": {},

"конфиг": [

{

"Subnet": "172.21.0.0/16",

"шлюз": "172.21.0.1"

}

]

},

"внутренний": ложный,

"Навесной": ложный,

"вход": ложный,

"ConfigFrom": {

"сеть": ""

},

"ConfigOnly": ложный,

"Контейнеры": {},

"Опции": {},

"Этикетки": {}

}

]

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

[Электронная почта защищена]: ~ $ docker network create – оверлей диска – geekflare_network_2

ynd2858eu1cngwhpc40m3h1nx

[Электронная почта защищена]: ~ $ docker network ls

ИМЯ СЕТИ ИМЯ ДРАЙВЕР ОБЛАСТЬ ПРИМЕНЕНИЯ

fec751a6ae21 мост мост местный

21943b20735d docker_gwbridge мост местный

08e0da91f6de geekflare_network bridge local

f51d1f3379e0 хост хост локальный

ppp8i7tvrxa0 входной оверлейный рой

ba68f73abeed mean-app_default мост местный

d466e75d86fa mean_default мост местный

5e5d9a192c00 нет ноль местный

ynd2858eu1cn geekflare_network_2 роя наложения

Чтобы создать хост-сеть, укажите host с флагом -driver. В приведенном ниже примере возвращается ошибка, поскольку разрешен только один экземпляр сети хоста, который уже работал ранее. Таким образом, эта команда не будет создавать другую сеть хоста.

[Электронная почта защищена]: ~ $ docker network create –driver host geekflare_network_3

Ответ об ошибке от демона: только один экземпляр "хозяин" сеть разрешена

Вывод

Это все о докерских сетях и о том, как вы можете подключаться, отключаться, создавать, проверять докерские сети. Попробуйте эти команды, чтобы ознакомиться с сетью Docket. Если вам интересно изучать Net Devops, проверьте это Курс удэми.

TAGS:

  • докер

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map