我正在运行jenkins docker image。在开始时,它抱怨无法访问互联网。
这是我运行它的方式:
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
然后jenkins实例在http://localhost:49001上运行。但它有连接问题:
离线此Jenkins实例似乎处于脱机状态。
有关在没有互联网的情况下安装Jenkins的信息 连接,请参阅脱机Jenkins安装文档。
您可以选择继续配置代理或跳过插件 安装。
我的系统中没有代理(家用笔记本电脑)。我想这可能是一个模糊的码头工具问题,但是:
我做错了吗?
只是为了确保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
运行连接到host
网络的容器可以解决问题并让jenkins访问互联网:
docker run -d --net host -v jenkins-shared-volume:/var/jenkins_home -t --name jenkins jenkins
但是我无法映射端口:jenkins可以在http://localhost:8080上直接访问,这可能是其他服务使用8080端口时的冲突源。
答案 0 :(得分:1)
奇怪的是,我昨晚使用詹金斯的官方形象遇到了同样的问题:
docker run -p 8080:8080 --rm jenkins/jenkins
虽然我还没弄清楚为什么还是如何永久修复它,但我找到了解决方法。
使用较旧的不支持的图像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:
答案 1 :(得分:1)
运行“ ping 8.8.8.8”时,您正在测试Internet连接,但未测试DNS解析。
尝试“ ping www.google.com”,我认为您遇到了DNS问题,这就是Jenkins无法访问插件包的原因。
编辑/etc/docker/daemon.json并设置本地DNS服务器,以避免Docker使用默认的Google Public DNS。 Docker Docs - Daemon configuration file