Docker: Jenkins 容器无法在 QNAP 设备上访问互联网
Docker: Jenkins container can't access internet on QNAP device
我尝试使用内部 ContainerStation 在我的 QNAP NAS 上获取 Docker 映像(1.651.3 或最新版本)运行。
没有设置任何参数,没有绑定任何资源,直接使用默认设置,无法上网。我已经尝试过 NAT 或主机网络模式,但这没有什么区别。
堆栈跟踪:
Oct 02, 2016 1:55:07 PM javax.jmdns.impl.HostInfo newHostInfo
WARNING: Could not intialize the host network interface on nullbecause of an error: 5929616b9f0b: 5929616b9f0b: unknown error
java.net.UnknownHostException: 5929616b9f0b: 5929616b9f0b: unknown error
at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
at javax.jmdns.impl.HostInfo.newHostInfo(HostInfo.java:75)
at javax.jmdns.impl.JmDNSImpl.<init>(JmDNSImpl.java:407)
at javax.jmdns.JmDNS.create(JmDNS.java:60)
at hudson.DNSMultiCast.call(DNSMultiCast.java:32)
at jenkins.util.ContextResettingExecutorService.call(ContextResettingExecutorService.java:46)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.UnknownHostException: 5929616b9f0b: unknown error
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress.lookupAllHostAddr(InetAddress.java:928)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
at java.net.InetAddress.getLocalHost(InetAddress.java:1500)
... 9 more
使用bash:
$ ping google.de
ping: unknown host
知道可能是什么问题吗?任何其他docker图像都可以上网,只有这个图像有这些问题。
我最近遇到了同样的问题,在我的情况下,它是由 QNAP 上的 ACL 列表引起的,阻止容器中的 jenkins 用户读取 /etc/hosts
和 /etc/resolv.conf
个文件。
这是我修复它的方法。或许对你也有帮助:
ssh 到 QNAP
$ ssh admin@<your IP or domain name here>
在QNAP上手动创建一个jenkins用户,UID为1000(相同
作为容器中 jenkins 用户的 UID)
$ useradd -u 1000 -M -s /bin/false jenkins
登录 QNAP 网页界面
导航至控制面板 -> 用户
单击 jenkins 用户的 编辑共享文件夹权限 图标
为 Container 文件夹勾选 RW 复选框(Read/Write 访问权限)
然后单击 应用
启动你的 Jenkins 容器
免责声明:我不是系统管理员,所以我不知道这种方法是否会对您的系统造成任何安全问题。在允许外部访问您的 Jenkins Web 界面之前,您可能需要调查一下...:)
我尝试使用内部 ContainerStation 在我的 QNAP NAS 上获取 Docker 映像(1.651.3 或最新版本)运行。
没有设置任何参数,没有绑定任何资源,直接使用默认设置,无法上网。我已经尝试过 NAT 或主机网络模式,但这没有什么区别。
堆栈跟踪:
Oct 02, 2016 1:55:07 PM javax.jmdns.impl.HostInfo newHostInfo
WARNING: Could not intialize the host network interface on nullbecause of an error: 5929616b9f0b: 5929616b9f0b: unknown error
java.net.UnknownHostException: 5929616b9f0b: 5929616b9f0b: unknown error
at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
at javax.jmdns.impl.HostInfo.newHostInfo(HostInfo.java:75)
at javax.jmdns.impl.JmDNSImpl.<init>(JmDNSImpl.java:407)
at javax.jmdns.JmDNS.create(JmDNS.java:60)
at hudson.DNSMultiCast.call(DNSMultiCast.java:32)
at jenkins.util.ContextResettingExecutorService.call(ContextResettingExecutorService.java:46)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.UnknownHostException: 5929616b9f0b: unknown error
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress.lookupAllHostAddr(InetAddress.java:928)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
at java.net.InetAddress.getLocalHost(InetAddress.java:1500)
... 9 more
使用bash:
$ ping google.de
ping: unknown host
知道可能是什么问题吗?任何其他docker图像都可以上网,只有这个图像有这些问题。
我最近遇到了同样的问题,在我的情况下,它是由 QNAP 上的 ACL 列表引起的,阻止容器中的 jenkins 用户读取 /etc/hosts
和 /etc/resolv.conf
个文件。
这是我修复它的方法。或许对你也有帮助:
ssh 到 QNAP
$ ssh admin@<your IP or domain name here>
在QNAP上手动创建一个jenkins用户,UID为1000(相同 作为容器中 jenkins 用户的 UID)
$ useradd -u 1000 -M -s /bin/false jenkins
登录 QNAP 网页界面
导航至控制面板 -> 用户
单击 jenkins 用户的 编辑共享文件夹权限 图标
为 Container 文件夹勾选 RW 复选框(Read/Write 访问权限) 然后单击 应用
启动你的 Jenkins 容器
免责声明:我不是系统管理员,所以我不知道这种方法是否会对您的系统造成任何安全问题。在允许外部访问您的 Jenkins Web 界面之前,您可能需要调查一下...:)