Устройство сети Docker
За управление сетями в докере отвечает библиотека Libnetwork. Она пользуется функционалом, доступным в Linux для работы с сетями внутри него.
- Она утилизирует неймспейсы сети
- использует виртуальные мосты для соединения одного образа с другим
- виртуализация интернет-подключений
- управляет правилами iptables
Контейнер, при поднятии, создаёт виртуальный интернет-адаптер. Этот адаптер подключается к виртуальному мосту и уже сам мост получает доступ в интернет. Через мост несколько контейнеров могут общаться в рамках одного хоста.
Так как библиотека для работы с сетью достаточно гибкая, то она может предоставить нам возможность работать с несколькими драйверами, которые определяют поведение работы сети.
bridge
- изолирует сеть между всеми контейнерамиhost
- контейнер будет работать напрямую с сетью компьютера без дополнительных слоёвoverlay
- соединяет множество хост-машин в одну сеть для взаимодействия контейнеровmacvlan
- создаёт новое физическое устройство со своим mac (сильно влияет на перфоманс сети)null
- не даёт сеть контейнеру
Управляется сеть достаточно просто самыми базовыми командами
connect
create
- создаст сеть по определённому типу драйвераdisconnect
inspect
ls
- отображает сетиrm
- удаляет сетьprune
- удаляет неиспользуемые
Выведем список доступных сетей докера, которые созданы по-умолчанию
Ну и далее можем проинспектировать любую
scope
- текущая область сети (локальная, удалённая)driver
- текущий драйверEnableIPv6
- так же можно подключить ipv6 на сетьIPAM
- хранит список подсетей и их драйверов для всех контейнеровContainers
- хранит список контейнеров, которые подключены к этой сети. По указанному внутриIPv4Address
можно пингануть контейнер