Не удается получить доступ к jupyterhub в контейнере docker с помощью netowrk_mode: host - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть jupyterhub, работающий в контейнере с network_mode: host из-за некоторых требований. Однако после настройки network_mode для размещения в моем docker -компонентном файле я не могу получить доступ к jupyterhub с внешнего хоста, используя ip: 8000 хоста.

мое понимание от это

Если вы используете режим сети хоста для контейнера, сетевой стек этого контейнера не изолирован от хоста Docker (контейнер совместно использует пространство имен сети хоста), и контейнер не получает его выделен собственный IP-адрес. Например, если вы запускаете контейнер, который привязывается к порту 80, и вы используете хост-сеть, приложение контейнера доступно на порту 80 на IP-адресе хоста.

Есть ли что-то, что мне не хватает?

РЕДАКТИРОВАТЬ: Для упрощения я следую инструкциям здесь

docker run --rm -d --network host --name my_nginx nginx

Я могу получить доступ к nginx странице приветствия, выполнив

$ curl localhost:80

, но если я пытаюсь свернуться с другого хоста, я получаю

$ curl 10.230.0.123:80
curl: (7) Failed connect to 10.230.0.123:80; No route to host

1 Ответ

1 голос
/ 23 апреля 2020

Эта проблема может возникнуть, если на вашей системе брандмауэр активен и блокирует доступ к порту. Вы можете включить доступ к порту, используя ниже:

# in centos7, by updating iptables rules
iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

# in ubuntu
sudo ufw allow 80/tcp
...