Использование /etc/docker/daemon.json с контентом
{
"iptables": false
}
может звучать как решение, но оно работает только до следующей перезагрузки. После этого вы можете заметить, что ни один из ваших контейнеров не имеет доступа к Интернету, поэтому вы не можете, например, пинговать любой сайт. Это может быть нежелательное поведение.
То же самое относится к привязке контейнера к определенному IP. Возможно, вы не захотите этого делать. , но он работает только до следующей перезагрузки и того, как вы создаете этот контейнер, поэтому есть решение:
После создания файла /etc/docker/daemon.json вызовите:
sed -i -e 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/g' /etc/default/ufw
ufw reload
, поэтому вы устанавливаете политику приоритета по умолчанию в UFW для принятия и используете:
iptables -t nat -A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE
Если вы собираетесь использовать компоновку docker, тогда приведенная выше команда IP должна быть заменена на IP-адрес создания сетевой докеры создает при запуске с помощью docker-compose up.
Я описал проблему и решение более подробно в этой статье
Надеюсь, что это поможет!