Большинство традиционных сетей контейнеров обрабатываются мостами, преобразованием сетевых адресов (NAT) или путем привязки к сети хоста. Если вы хотите, чтобы ваши контейнеры выглядели как физические хосты в вашей сети и каждый с уникальным MAC-адресом, то самый простой способ - это использовать плагины macvlan и dhcp, которые поставляются с пакетом containernetworking-plugins.
О macvlan
Плагин macvlan является частью пакета containernetworking-plugins. Macvlan похож на коммутатор, который подключен к сетевому интерфейсу хоста. Используя виртуальные интерфейсы в сочетании с интерфейсом хоста, каждое устройство может иметь отдельный MAC-адрес. Этот факт позволяет существующим DHCP-серверам в существующей сети взаимодействовать с устройствами и назначать адреса.
Плагин macvlan также требует использования плагина dhcp containernetworking-plugin.
Создание файла конфигурации CNI
Для начала необходимо вручную создать новый файл конфигурации сетевого интерфейса контейнера (CNI). Перед созданием файла вы должны знать, какой интерфейс хоста будет использоваться для привязки. Эту информацию можно найти с помощью инструментов ip или ifconfig.
cat /etc/cni/net.d/90-example.conflist
{
"cniVersion": "0.4.0",
"name": "example",
"plugins": [
{
"type": "macvlan",
"master": "enp0s3",
"ipam": {
"type": "dhcp"
}
}
]
}
Запуск DHCP плагина
Плагин dhcp является прокси-клиентом DHCP для контейнера, поскольку в большинстве образов контейнеров отсутствует DHCP-клиент для взаимодействия с DHCP-сервером.
Чтобы запустить плагин dhcp, введите:
/usr/libexec/cni/dhcp daemon &
Запуск контейнера
podman run -it --rm --network example debian ip addr show