#docker #jenkins #networking
#docker #дженкинс #сеть
Вопрос:
Я пытаюсь запустить контейнер jenkins. Порт 8080 сопоставлен с хост-портом 80.
docker run -p 80:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
Я могу свернуть приложение jenkins с хоста, однако я не могу получить доступ к нему извне хоста.
curl localhost:80
работает внутри хоста
но
curl <fqdn or ip address>:80
не работает вне хоста (той же сети, что и хост) и тайм-аута.
Если я установлю —net=host , приведенная выше команда сработает, но я бы не хотел использовать сеть хоста на случай, если мне понадобится добавить дополнительные службы в будущем.
Я думаю, что это не проблема брандмауэра, потому что при настройке сети на хост ссылка работает.
С помощью tcpdump я могу видеть запросы в главном интерфейсе хоста, однако никакие пакеты не пересылаются на интерфейс docker0. Это нормальное поведение?
Что я могу сделать , чтобы решить проблему , чтобы связаться с Дженкинсом за пределами хоста?
Комментарии:
1. что
docker ps -a
показывает?0.0.0.0:80->8080/tcp
? можете ли вы попробовать использовать другой порт (а не 80), чтобы убедиться, что он не фильтруется вашей сетью?2. Да, он показывает 0.0.0.0: 80-> 8080 / tcp. На этот раз я попытался использовать порт 8080. Это дает мне тот же результат: ответ на тайм-аут
3. Это все еще может быть проблемой брандмауэра: при использовании
--net=host
доступ контролируетсяINPUT
цепочкой, в то время как без нее доступ контролируетсяFORWARD
цепочкой (и правилами вnat
таблице). Рассмотрите возможность перезапуска демона docker (что заставит его заново создать все критически важные отсутствующие правила брандмауэра), чтобы посмотреть, повлияет ли это как-либо на ситуацию.4. Я перезапустил службу с
systemctl restart docker
помощью . У меня все та же проблема. Есть ли у вас несколько советов о том, как я могу проверить, фильтруются ли запросы ПРЯМОЙ цепочкой?5. вы используете docker в Windows? если да, то, вероятно, вам нужно настроить свою виртуальную машину для предоставления портов. В противном случае это звучит как проблема с брандмауэром. Другая идея — использовать nginx в качестве шлюза