Я запустил образ портера, используя:
docker run -d -P -p 9000:9000 portainer/portainer
Но можно получить доступ к сети только через порт 9000 локально, используя lynx. Я разрешаю брандмауэр на порт 9000 как входящий, так и исходящий, так что это не должно быть проблемой.
$ sudo iptables -t filter -L -n -v | grep 9000 0 0 ПРИНЯТЬ tcp -! docker0 docker0 0.0.0.0/0 172.17.0.2 tcp dpt: 9000
Но мне сложно интерпретировать таблицу NAT, которая может быть подозреваемой.
$ sudo iptables -t nat -L -n -v Цепочка PREROUTING (политика ПРИНЯТЬ 7 пакетов, 420 байтов) pkts bytes target prot opt in out
источник назначение 415 24676 ДОКЕР все - * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE соответствует dst-type LOCALЦепочка INPUT (политика ACCEPT 1 пакеты, 60 байтов) pkts bytes target
prot отказаться от источника назначенияЦепочка OUTPUT (политика ACCEPT 0 пакетов, 0 байтов) pkts bytes target
prot opt in out source destination
0 0 DOCKER all - * * 0.0.0.0/0! 127.0.0.0/8 ADDRTYPE соответствует dst-type LOCALЦепочка POSTROUTING (политика ACCEPT 0 пакетов, 0 байтов) pkts bytes target prot opt in source destination
0 0 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0 0 0 MASQUERADE tcp -- * * 172.17.0.2 172.17.0.2 tcp dpt:9000
Цепочка DOCKER (2 ссылки) pkts bytes target prot opt in source destination
0 0 ВОЗВРАТ все - docker0 * 0.0.0.0/0 0.0.0.0/0
0 0 DNAT tcp -! Docker0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 9000 до: 172.17.0.2: 9000
Может кто-нибудь помочь мне здесь?
Обновление1:
Я попробовал ту же команду на другом сервере Ubuntu с той же версией докера, но она работает. Единственная разница в таблице NAT после запуска и привязки контейнера - это запись POSTROUTING, в которой говорится:
pkts bytes target prot opt in source назначение
0 0 MASQUERADE все - * eth0 10.0.0.0/8 0.0.0.0/0
Но я думаю, это может не быть связано, или нет?
Ubuntu 16.04 Docker версии 17.05.0-ce, сборка 89658be
Спасибо всем за помощь в комментариях,
Оказывается, я просто использую nmap <host>
чтобы проверить открытие порта и обнаружил, что 9000 не открывается, хотя внутренний брандмауэр / iptables говорят иначе.
Затем я вспоминаю, что у VPS, который я использую, есть еще один внешний уровень брандмауэра, который я также должен настроить. Глупый, но я изучаю базовый процесс трассировки / cmds. Спасибо, ребята!