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

Не удается получить доступ к собственному URL-адресу хоста из среды докеров сборки Jenkins

Я запускаю Jenkins как образ Docker (https://hub.docker.com/_/jenkins) Изнутри я запускаю образ докера node-12 в качестве контейнера сборки.

Я запускаю сценарий для публикации новой версии в нашем локальном магазине приложений, который работает на том же VServer.

Итак, теперь у меня есть феномен, заключающийся в том, что я не могу использовать собственный URL-адрес сервера. Сценарий bash безупречно работает вне моей локальной машины, оболочки VServers, а также внутри оболочки других контейнеров.

А теперь самый странный факт: у меня всегда бывают таймауты!

Это не «не удалось разрешить» или подобное.

Примечание. Ips и домены заменяются на, а ips на Команды Curl

/ $ curl https://<my-domain> 
curl: (7) Failed to connect to <my-domain> port 443: Operation timed out 
/ $ curl https://example.domain
curl: (6) Could not resolve host: example.domain
/ $ curl -IL https://google.de 
HTTP/2 301  

Ошибка клиента NodeJS

(node:90) UnhandledPromiseRejectionWarning: Error: connect ETIMEDOUT <my-ip>:443

    at Object._errnoException (util.js:992:11)
    at _exceptionWithHostPort (util.js:1014:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1186:14)

Где как гугл или другие сайты не проблема. Это только URL-адрес собственного хоста.

Я обнаружил, что при запуске из оболочки jenkins (docker exec -it jenkins bash) я также не могу выполнить ping / curl / что угодно

Спасибо за любые предложения, чтобы исправить это.

// редактировать

Это конфигурация docker-compose. Я использую traefik как обратный прокси.

  jenkins:
    image: jenkinsci/blueocean
    container_name: jenkins
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - jenkins_data:/var/jenkins_home
    labels:
      - "traefik.port=8080"
      - "traefik.frontend.rule=Host:ci.domain.example"
      - "traefik.frontend.passHostHeader=true"

jenkins инициализируется с помощью tini (https://github.com/krallin/tini)

            "Entrypoint": [
                "/sbin/tini",
                "--",
                "/usr/local/bin/jenkins.sh"
            ],

Я проверю, служит ли tini брандмауэром для этого процесса.

Если я docker exec в контейнер с корнем, я могу даже пропинговать IP, но все равно не могу свернуться.

bash-4.4# ping <my-domain>
PING <my-domain> (<my-ip>): 56 data bytes 
64 bytes from <my-ip>: seq=0 ttl=64 time=0.085 ms    

// редактировать 2

Я считаю, что проблема уже начинается с maven, изображение jenkins основано на:

https://github.com/jenkinsci/jenkins/blob/master/Dockerfile

Когда я создаю новый контейнер докеров с помощью maven, я получаю точно такое же поведение, как описано выше.

// редактировать 3

Я получаю такое же поведение в контейнере maven и на один уровень глубже в openjdk .. docker run -it openjdk:8-jdk с curl на собственное имя хоста приводит к тому же поведению.

Опять же: я не получаю этого ни в одном из моих контейнеров, работающих на debian / ubuntu.

// редактировать 4

Невозможно воспроизвести с другого сервера. Затронут только этот всервер.