Docker:Jenkins容器无法在QNAP设备上访问互联网

我尝试使用内部ContainerStation获取在我的QNAP NAS上运行的Docker镜像( 1.651.3或最新版本)。

只使用默认设置而不设置任何参数或绑定任何资源,我无法访问互联网。 我已经尝试了NAT或主机networking模式,但这不会有什么区别。

Stacktrace

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图像可以访问互联网,只有这个形象有这些问题。

我最近遇到了同样的问题,在我的情况下,原来是由QNAP的ACL列表引起的,阻止容器中的jenkins用户读取/etc/hosts/etc/resolv.conf文件。

这是我如何修复它。 也许这对你也有一些帮助:

  1. ssh到QNAP

    $ ssh admin@<your IP or domain name here>

  2. 在QNAP上用UID 1000手动创build一个jenkins用户(与容器中的jenkins用户相同的UID)

    $ useradd -u 1000 -M -s /bin/false jenkins

  3. 登入QNAP网页界面

  4. 导航到“ 控制面板” – >“ 用户”

  5. 点击jenkins用户的Edit Shared Folder Permissions图标

  6. 选中容器文件夹的RWcheckbox(读/写访问),然后单击应用

  7. 启动你的jenkins容器

免责声明:我不是系统pipe理员,所以我不知道这种方法是否会导致您的系统上的任何安全问题。 您可能需要在外部访问您的Jenkinsnetworking界面之前仔细观察… 🙂