Назад | Перейти на главную страницу

Должен ли я запускать docker bridge0 в той же подсети, что и мой хост-докер?

Я решил запустить несколько контейнеров докеров в своей домашней сети, используя настраиваемый (определяемый пользователем) интерфейс моста. Я дал мосту статический IP-адрес в той же сети, что и мой хост-докер. У eth0 хоста докера: 192.168.10.20/24, в то время как docker bridge0 настроен на 192.168.10.21/24. Мне не нужно, чтобы контейнеры докеров общались с другими контейнерами докеров. Я хочу, чтобы каждый контейнер запускал службу на своем собственном IP-адресе, доступном для любого хоста в моей сети 192.168.10.0/24. Как проще всего этого добиться? Используя CentOS 7.6.1810, docker 18.09.0, сборку 4d60db4.

Кроме того, используют ли классные дети /etc/docker/daemon.json или / etc / sysconfig / docker для управления настройками? Не уверен, что использование systemd - лучший вариант для докера.

Вы не хотите, чтобы мост был определен с той же подсетью, что и Ethernet вашего хоста. Linux не будет знать, в какую сеть отправлять пакеты, поскольку они имеют одну и ту же запись маршрутизации. Если вам действительно нужны отдельные IP-адреса для контейнеров (это очень нетрадиционная конфигурация), тогда вам нужно Macvlan или ipvlan.

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

Не было необходимости изменять сетевой стек докеров по умолчанию. Все, что мне было нужно, - это указать хост-сеть (--net = host), чтобы сделать слушателя доступным для моей локальной сети. docker run -d --net = хост --name {container_name} {options}