Jenkins在作为docker容器运行时无法访问Internet

dan*_*ast 15 proxy jenkins docker

我正在运行jenkins docker图像.启动时,它抱怨无法访问互联网.

这是我运行它的方式:

docker pull jenkins
mkdir jenkins-shared-volume
docker run -d -p 49001:8080 -p 50000:50000 -v jenkins-shared-volume:/var/jenkins_home -t --name jenkins jenkins
Run Code Online (Sandbox Code Playgroud)

然后jenkins实例在http:// localhost:49001上运行.但它有连接问题:

离线此Jenkins实例似乎处于脱机状态.

有关在没有Internet连接的情况下安装Jenkins的信息,请参阅脱机Jenkins安装文档.

您可以选择继续配置代理或跳过插件安装.

在此输入图像描述

我的系统中没有代理(家用笔记本电脑).我想这可能是一个模糊的docker问题,但是:

  1. 我找不到任何关于这个问题的引用
  2. 由于这是人们运行jenkins docker图像的常用方式,因此我发现令人惊讶的是这不是开箱即用的

难道我做错了什么?

编辑

只是为了确保docker容器确实可以直接访问互联网:

docker exec -it jenkins /bin/bash
jenkins@4ef4944a7cb7:/$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=44 time=29.859 ms
Run Code Online (Sandbox Code Playgroud)

EDIT2

运行连接到host网络的容器解决了问题,让jenkins访问互联网:

docker run -d --net host -v jenkins-shared-volume:/var/jenkins_home -t --name jenkins jenkins
Run Code Online (Sandbox Code Playgroud)

但是我无法映射端口:jenkins可以在http:// localhost:8080上直接访问,这可能是其他服务使用8080端口时的冲突源.

小智 2

奇怪的是,我昨晚使用官方 Jenkins 镜像遇到了同样的问题:

 docker run -p 8080:8080 --rm jenkins/jenkins
Run Code Online (Sandbox Code Playgroud)

虽然我还没有弄清楚为什么或如何永久修复它,但我确实找到了解决方法。

使用较旧的不受支持的图像 jenkins 启动图像...进行初始设置..然后将其关闭,交换图像并启动官方。

这里是我的 docker-compose.yml 供参考:

version: "2"

services:
  app:
    image: jenkins #after booting and initial setup swap to jenkins/jenkins
    ports:
      - "50000:50000"
      - "8080:8080"
    volumes:
      - home:/var/jenkins_home
volumes:
  home:
Run Code Online (Sandbox Code Playgroud)