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

Docker, как явно разрешить любым двум контейнерам общаться, по умолчанию запретить

С новыми настраиваемыми сетями докеров, если вы хотите по умолчанию запретить межконтейнерную связь и явно определить любую пару контейнеров, которые могут обмениваться данными, вам нужно будет создать до 2 ^ N сетей (где N = количество контейнеров) и точно подключать по два контейнера в каждую сеть. Есть ли у этого недостатки?

Кроме того, если я хочу разрешить только исходящие соединения от webServerContainer к dbContainer, но не входящий из dbContainer к webServerContainer, есть ли способ сделать это?

Похоже на использование icc=false и наследие --link функция допускает что-то подобное, но функция помечена как устаревшая.

Например:

Есть ли у кого-нибудь совет о том, как лучше всего добиться этого, начиная с Docker 17.12?

Мой ответ может быть не самым глупым, но все же, надеюсь, полезным.

Я предпочитаю делать это вручную. Docker манипулирует iptables для достижения правил доступа и межконтейнерного взаимодействия. Мне лично это не нравится (по нескольким причинам; состояние iptables обычно становится большим беспорядком, особенно если другое программное обеспечение также манипулирует iptables). Итак, я установил "iptables": false в /etc/docker/daemon.json на ложь:

# cat daemon.json 
{
  "iptables": false
}

И просто настройте сеть, как при маршрутизации трафика между сетями.

Это также означает, что вам необходимо настроить переадресацию портов (или HTTP-проксирование и т. Д.) Для доступа к контейнерам извне, и что вы должны определить свои собственные сети докеров (docker network).

Мой ответ Вот также может помочь.