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

Я следовал этим инструкциям здесь для создания кластера Docker Swarm из 3 узлов.

Вначале я открыл несколько портов с помощью 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 hello world.

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


person zarathustra    schedule 14.05.2017    source источник
comment
Проблема и решение описаны в stackoverflow.com/questions/30383845/ полностью.   -  person Te Ri    schedule 17.01.2018


Ответы (1)


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

person Oliver    schedule 15.05.2017