С новыми настраиваемыми сетями докеров, если вы хотите по умолчанию запретить межконтейнерное взаимодействие и явно определить любые пары контейнеров, которые могут обмениваться данными, вам нужно будет создать до 2 ^ N сетей (где N = количество контейнеров) и присоединить ровно два контейнера к каждой сети. Есть ли у этого недостатки?
Кроме того, если я хочу разрешить исходящие соединения только с webServerContainer
на dbContainer
, в идеале я хочу, чтобы моим N контейнерам без состояния было разрешено инициировать подключения к моему контейнеру базы данных, но я не хочу, чтобы мой контейнер базы данных мог инициировать подключения другим способом
Есть ли у кого-нибудь совет по наилучшему способу достижения этого, с Docker 17.12?
Мой ответ может быть не самым глупым, но все же, надеюсь, полезным.
Я предпочитаю делать это вручную. Docker манипулирует iptables для достижения правил доступа и межконтейнерного взаимодействия. Мне лично это не нравится (по нескольким причинам; состояние iptables обычно становится большим беспорядком, особенно если другое программное обеспечение также управляет iptables). Итак, я установил для "iptables": false
в /etc/docker/daemon.json
значение false:
# cat daemon.json
{
"iptables": false
}
И просто настроил сеть, как при маршрутизации трафика между сетями. .
Это также означает, что вам необходимо настроить переадресацию портов (или HTTP-проксирование и т. Д.) Для доступа к контейнерам извне, и что вы должны определить свои собственные сети докеров ( сеть докеров
) .
Мой ответ здесь также может помочь.