Сеть (networking)
Docker поставляется со следующими сетевыми драйверами в рамках библиотеки libnetwork:
- single-host bridge networks (bridge)
- multi-host overlays (overlay)
- options for plugging into existing VLANs (macvlan)
Для тестов нужно установить
apt-get install bridge-utils
Docker регистрирует DNS сервис в пределах бриджа. Но в сети по умолчанию DNS сервиса нет.
Команда | Описание |
brctl show |
Список бриджей.
|
Также есть опция поиска сервисов и балансировка входной нагрузки.
Основная команда | Параметр | Описание |
docker network | ls | Список сетей |
docker inspect ИмяСети | Выводит информацию по указанной сети. bridge - сеть по умолчанию. | |
docker network create | -d драйвер |
Создает сеть
|
название сети | ||
docker port ContName | Выводит map портов внутрь контейнера | |
Single-host bridge networks
Создается интерфейс на хосте docker.
Один порт может занимать только один контейнер.
Multi-host overlay networks
Для взаимодействия контейнеров внутри одного хоста.
Зplugging into existing VLANs
Для прямого подключения к сетевому интерфейсу соответственно с независимым адресом. Необходим promiscuous mode на интерфейсе хоста (неразборчивый режим).
ipvlan (без l2 подключения) заработал
services:
condb:
image: nginx
networks:
my_ipvlan:
ipv4_address: 192.168.1.40
networks:
my_ipvlan:
driver: ipvlan
driver_opts:
parent: enp0s3
ipvlan_mode: l2
ipam:
config:
- subnet: 192.168.1.0/24
gateway: 192.168.1.1
Для macvlan
sudo ip link add mymacvlan link enp0s3 type macvlan mode bridge
sudo ip addr add 192.168.1.99/24 dev mymacvlan
sudo ip link set mymacvlan up