Thank you for reading this post, don't forget to subscribe!
Сетевая Docker подсистема подключается используя драйверы. По умолчанию существует несколько драйверов которые обеспечивают основные сетевые функции:
- bridge: Мост, — это сетевой драйвер по умолчанию. Бридж сеть используется, когда ваши приложения запускаются в автономных контейнерах, которые должны взаимодействовать между собой (Наглядный пример Nginx + MySQL).
- host: Хост, — это сетевой драйвер для автономных контейнеров (удаленная сетевая изоляция между контейнером и Docker хостом). Данный драйвер доступен только для docker-swarm с поддержкой Docker 17.06 и выше.
- overlay/overlay2: Оверлей (Наложенная сеть), — это сетевой драйвер для соединения несколько демонов Docker между собой и которые позволяют docker-swarm службам взаимодействовать друг с другом. Вы также можете использовать оверлейные сети для облегчения связи между docker-swarm и автономным контейнером или между двумя отдельными контейнерами на разных Docker демонах. Эта стратегия устраняет необходимость выполнения маршрутизации на уровне ОС между этими контейнерами.
- macvlan: Маквлан,- это сетевой драйвер, который позволяют назначать MAC-адрес контейнеру, делая его отображаемым как физическое устройство в вашей сети. Docker демон направляет трафик на контейнеры по их MAC-адресам. Использование macvlan драйвера иногда является лучшим выбором при работе с устаревшими приложениями, которые ожидают, что они будут напрямую подключены к физической сети.
- none: Нон,- это сетевой драйвер, который умеет отключать всю сеть для контейнеров. Обычно используется в сочетании с пользовательским сетевым драйвером.
- Network plugins: Вы можете установить и использовать сторонние сетевые плагины с Docker контейнерами. Эти плагины доступны в Docker Store или у сторонних поставщиков услуг.
Где и что лучше использовать?
- Мост (bridge) лучше всего использовать для связи нескольких контейнеров на одном и том же Docker хосте. Можно юзать docker-compose и выберать даную сеть для такой связки.
- Хост (host) сети лучше всего юзать, когда сетевой стек не должен быть изолирован от хоста Docker, но вы хотите, чтобы другие аспекты контейнера были изолированы.
- Овердейная сеть (overlay/overlay2) или наложение сетей лучше всего заюзать, когда вам нужны контейнеры, работающие на разных Docker хостах для связи, или, когда несколько приложений работают вместе, используя docker-swarm.
- Маквлан (macvlan) сети лучше всего использовать, когда вы переходите с VM/дедикейта на контейнеры или хотите, чтобы ваши контейнеры выглядели как физические хосты в вашей сети, каждый с уникальным MAC-адресом.
- Сторонние сетевые плагины позволяют интегрировать Docker со специализированными сетевыми стеками.
Просмотреть Network в Docker
Чтобы проверить какие сети имеются, выполните следующую команду:
- NETWORK ID — При создании сети, ей присваивается ID. Так это собственно индификатор сети.
- NAME — Имя сети. Можно задать произвольное имя.
- DRIVER — Используемый драйвер для созданной сети.
- SCOPE — Где используется.
Если посмотреть на поле «DRIVER», то можно понять что я использую стандартную сеть, которую предоставляет сам докер.
Создать Network в Docker
Давайте создадим сеть, самый простой способ это:
Или:
Вы можете создавать bridge, overlay, host, none или кастомный network-инг. По дефолту, — создается мост. Проверяем что вышло:
Как я и говорил, создался бридж с указанным названием сети. Давайте рассмотрим пример создания оверлей-сети:
Можно создать macvlan сеть, например:
Идем дальше.
Подключить/Отключить контейнер(ы) к/от сети в Docker
Чтобы законектить контейнер к сети, нужно выполнить следующую команду:
$·docker network connect YOUR_NETWORK YOUR_CONTAINER
- YOUR_NETWORK — Сеть.
- YOUR_CONTAINER — Контейнер.
Для отключения служит обратная команда:
$·docker network disconnect YOUR_NETWORK YOUR_CONTAINER
- YOUR_NETWORK — Сеть.
- YOUR_CONTAINER — Контейнер.
Идем далее.
Инспектор Network в Docker
Можно получить подробную информацию о той или иной сети, например:
[codesyntax lang="php" blockstate="collapsed"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
[ { "Name": "bridge-network", "Id": "c8668b3fc7f6ac9d8694a34d225327f9abb1d195c9757966919ed4adf9b35cea", "Created": "2018-10-19T08:24:28.511405837Z", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "172.18.0.0/16", "Gateway": "172.18.0.1" } ] }, "Internal": false, "Attachable": false, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": {}, "Options": {}, "Labels": {} } ] |
[/codesyntax]
Так же, можно получить инфу со следующей команды:
Для удаления сети, используйте: