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

Я решил запустить несколько контейнеров докеров в своей домашней сети, используя настраиваемый (определяемый пользователем) интерфейс моста. Я дал мосту статический 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 - лучший вариант для докера.

1
задан 17 December 2018 в 03:32
2 ответа

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

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

1
ответ дан 3 December 2019 в 23:09

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

0
ответ дан 3 December 2019 в 23:09

Теги

Похожие вопросы