Докерный рой контейнер доступен, хотя порт не открыт?

Я выполнил эти инструкции здесь, чтобы создать кластер Docker Swarm с тремя узлами.

Вначале я открыл несколько портов с помощью ufw для связи между узлами ufw :

 # ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), deny (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere 2376/tcp ALLOW IN Anywhere 2377/tcp ALLOW IN Anywhere 7946/tcp ALLOW IN Anywhere 7946/udp ALLOW IN Anywhere 4789/udp ALLOW IN Anywhere 22/tcp (v6) ALLOW IN Anywhere (v6) 2376/tcp (v6) ALLOW IN Anywhere (v6) 2377/tcp (v6) ALLOW IN Anywhere (v6) 7946/tcp (v6) ALLOW IN Anywhere (v6) 7946/udp (v6) ALLOW IN Anywhere (v6) 4789/udp (v6) ALLOW IN Anywhere (v6) 

Как видите, порт 80 не открыт.

Итак, в конце учебника я развернул официальное изображение докеры nginx в кластере:

docker service create -p 80:80 --name webserver nginx

Я смог ввести IP-адрес моего сервера и был представлен всемирной страницей приветствия nginx.

Теперь мне интересно, почему я могу добраться до веб-сервера, хотя порт 80 не открыт?

    Docker устанавливает правила iptables сами, вмешиваясь в UFW.
    Попробуйте запустить демон docker с дополнительной опцией командной строки --iptables=false .