Назад | Перейти на главную страницу

Не удается получить внешний статический IP-адрес на GCE для подключения к контейнеру Docker на экземпляре

Я установил экземпляр Google Compute Engine (GCE) с назначенным статическим IP-адресом. Моя цель - запустить контейнер Docker для osticket на этом экземпляре.

Я запустил контейнер Docker как обычно. Я могу подключиться с помощью Lynx из оболочки bash, запущенной внутри контейнера (lynx http://0.0.0.0).

Пожалуйста, поймите, я не профессионал в области сетевых технологий. Прочитав о сети Docker, я использовал эту предложенную команду iptables на экземпляре (iptables -t nat -L -n) и обнаружил IP-адрес (172.17.0.7), назначение которого для меня загадка:

Chain DOCKER (2 references) 
target  prot opt source        destination
DNAT    tcp  --  0.0.0.0/0     0.0.0.0/0      tcp dpt:8080 to:172.17.0.7:80

Однако я зарядил вперед и в оболочке экземпляра (вне контейнера) я запустил Lynx, подключившись к этому IP-адресу (172.17.0.7:80), и он подключился к веб-сайту osticket! Я предполагаю, что он подключен к контейнеру.

Полный вывод iptables был:

Chain PREROUTING (policy ACCEPT) 
target     prot opt source      destination
DOCKER     all  --  0.0.0.0/0   0.0.0.0/0        ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT) 
target     prot opt source      destination         

Chain OUTPUT (policy ACCEPT) 
target     prot opt source       destination
DOCKER     all  --  0.0.0.0/0    !127.0.0.0/8   ADDRTYPE match dst-type LOCAL 

Chain POSTROUTING (policy ACCEPT) 
target     prot opt source           destination  
MASQUERADE all  --  172.17.0.0/16    0.0.0.0/0           
MASQUERADE tcp  --  172.17.0.7       172.17.0.7     tcp dpt:80

Chain DOCKER (2 references) 
target     prot opt source           destination          
DNAT       tcp  --  0.0.0.0/0        0.0.0.0/0      tcp dpt:8080 to:172.17.0.7:80

Итак, мой вопрос:

Теперь, когда я знаю, что контейнер докеров работает, и я могу добраться до него (по крайней мере, из экземпляра и через этот загадочный адрес), как получается, что внешний IP-адрес GCE должен подключаться через экземпляр и к этому контейнеру?

Пока не работает. Пытаясь подключиться из браузера моего ноутбука к этому внешнему IP-адресу, подключившись к порту 80, я получаю: «Этот сайт недоступен. XXX.XXX.XXX.XXX отказался подключиться». При подключении к порту 8080 я получаю сообщение «Этот сайт недоступен. Ответить на XXX.XXX.XXX.XXX потребовалось слишком много времени».

Я не могу найти исправление конфигурации, которое заставит его подключиться. Я могу успешно пропинговать этот внешний адрес, чтобы знать, что он к чему-то подключается. Я уверен, что статический IP-адрес назначен экземпляру osticket GCE.

Небольшая дополнительная информация: ранее я установил еще один GCE с контейнером Docker (Mattermost) с аналогичным внешним статическим IP. Внешний IP работал! Он без проблем соединился с контейнером. Я надеялся, что то же самое снова будет правдой. Не повезло.

[Edit: исправлена ​​опечатка.]

Вам необходимо создать правило брандмауэра на https://console.cloud.google.com/networking/firewalls/list открыть порт 80 для входящего внешнего трафика.