Чтобы открыть порт, вы должны связать внутреннюю сеть докеров с внешней, поэтому Docker добавляет свою собственную цепочку DOCKER
в iptables, управляемую сама.Когда вы открываете порт в контейнере, используя опцию -p 80:80
, Docker добавляет правило в эту цепочку.
В вашем списке правил вы можете найти:
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT
Если вы не хотите, чтобы Docker возился с iptables, вы можете добавить аргумент --iptables=false
к вашему исполнителю демона Docker, но тогда, вероятно, часть expose вашей команды docker может не работать автоматически, и вам может потребоватьсядобавить некоторые дополнительные правила iptables.Я не проверял это.
Вы можете найти эти опции /etc/default/docker
или /etc/systemd/system/docker.service.d
в зависимости от того, используете ли вы systemd, upstart или другие ...
Возможно, вы захотитепроверьте любую из этих ссылок:
https://docs.docker.com/config/daemon/systemd/
https://docs.docker.com/engine/reference/commandline/dockerd//#daemon-configuration-file