我尝试使用内部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$1.call(DNSMultiCast.java:32)
at jenkins.util.ContextResettingExecutorService$2.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$2.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镜像都可以访问internet,只有这个镜像有这些问题。
我最近遇到了同样的问题,在我的情况下,它原来是由QNAP上的ACL列表引起的,阻止容器中的jenkins用户读取/etc/hosts
和/etc/resolv.conf
文件。
这是我如何修复它。也许它也能对你有所帮助:
-
ssh到QNAP
$ ssh admin@<your IP or domain name here>
-
在QNAP上手动创建一个UID为1000的jenkins用户(相同)UID作为容器中的jenkins用户)
$ useradd -u 1000 -M -s /bin/false jenkins
-
登录QNAP web界面
-
导航到控制面板 -> 用户
-
为jenkins用户点击编辑共享文件夹权限图标
-
勾选容器文件夹的RW复选框(读写访问)点击应用
-
启动Jenkins容器
免责声明:我不是系统管理员,所以我不知道这种方法是否会在您的系统上引起任何安全问题。在让外部访问你的Jenkins web界面之前,你可能想要调查一下……:)