在QNAP中运行GOCD docker容器时获得java.net.UnnknownHostException



我正在尝试运行gocd docker容器(https://hub.docker.com/r/gocd/gocd-server/)在集装箱站的QNAP(基于TS-451x86,固件4.2.0)上。

容器没有启动,并使用java.netUnknownHostException:进行轰炸

May 21 20:21:28 gocd-server-1 syslog-ng[16]: syslog-ng starting up; version='3.5.3'                                                                              
using default settings from /etc/default/go-server                                                                                                               
ERROR: Failed to start Go server. Please check the logs.                                                                                                         
java.lang.RuntimeException: gocd-server-1: gocd-server-1                                                                                                         
at com.thoughtworks.go.util.ExceptionUtils.bomb(ExceptionUtils.java:36)                                                                                  
at com.thoughtworks.go.server.util.GoSslSocketConnector.getHostname(GoSslSocketConnector.java:102)                                                       
at com.thoughtworks.go.server.util.GoSslSocketConnector.storeX509Certificate(GoSslSocketConnector.java:92)                                               
at com.thoughtworks.go.server.util.GoSslSocketConnector.sslConnector(GoSslSocketConnector.java:56)                                                       
at com.thoughtworks.go.server.util.GoSslSocketConnector.<init>(GoSslSocketConnector.java:51)                                                             
at com.thoughtworks.go.server.Jetty9Server.sslConnector(Jetty9Server.java:133)                                                                           
at com.thoughtworks.go.server.Jetty9Server.configure(Jetty9Server.java:76)                                                                               
at com.thoughtworks.go.server.GoServer.configureServer(GoServer.java:84)                                                                                 
at com.thoughtworks.go.server.GoServer.startServer(GoServer.java:70)                                                                                     
at com.thoughtworks.go.server.GoServer.go(GoServer.java:63)                                                                                              
at com.thoughtworks.go.server.util.GoLauncher.main(GoLauncher.java:31)                                                                                   
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)                                                                                           
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)                                                                         
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)                                                                 
at java.lang.reflect.Method.invoke(Method.java:606)                                                                                                      
at com.simontuffs.onejar.Boot.run(Boot.java:306)                                                                                                         
at com.simontuffs.onejar.Boot.main(Boot.java:159)                                                                                                        
Caused by: java.net.UnknownHostException: gocd-server-1: gocd-server-1                                                                                           
at java.net.InetAddress.getLocalHost(InetAddress.java:1496)                                                                                              
at com.thoughtworks.go.server.util.GoSslSocketConnector.getHostname(GoSslSocketConnector.java:100)                                                       
... 15 more                                                                                                                                              
Caused by: java.net.UnknownHostException: gocd-server-1                                                                                                          
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method) 

我检查了容器中的/etc/hosts-它包括正确的主机映射:10.0.3.2 gocd-server-1

127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.0.3.2 gocd-server-1
hostname resovles correctly:
root@gocd-server-1:/tmp# hostname
gocd-server-1

容器映像很好-我在流浪的Ubuntuvm上运行了完全相同的gocd docker容器,没有任何问题

因此,这个问题在某种程度上与QNAP Linux(似乎是Ubuntu 4.1.2)有关

[~]#cat/proc/versionLinux 3.12.6版(root@NasX86-12)(gcc版本4.1.3 20070929(预发布版)(Ubuntu 4.1.2-1ubuntu2))#1 SMP 3月11日星期五CST 2016 02:20:16)

如何绕过java.netUnknownHostException异常有什么想法吗?

关闭这个线程:虽然我仍然不明白为什么会发生这种异常,但我想我找到了解决方法。因此,如果您是QNAP的所有者,并希望使用ContainerStation运行GOCD服务器,以下步骤可能会很有用:1.使用travix/gocd server:lastest image创建一个新容器(https://hub.docker.com/r/travix/gocd-server/)。该容器使用JDK8(而不是作为官方gocd容器的JDK7),此外还包括更多的配置选项(如果您在ContainerStation中创建容器时转到高级设置)。2.启动容器-您将得到异常-原因是:java.net.UnnknownHostException.

为什么?不知道,我确信我的/etc/hosts设置是正确的。事实上,我知道他们是正确的。

  1. 下一步-保持容器运行,但ssh到QNAP:

    sshadmin@192.168.1.79(在我的情况下-将盒子的ip更改为您的)

    //检查正在运行的映像:docker ps-

dde6ce0828868 travix/gocd server:最新"/doker entrypoint.s"21小时前21小时上21小时0.0.0.0:32793->8153/tcp,0.0.0.0:3279 2->8154/tcp gocd

// ssh into the container  
docker exec -it dde6ce028868 bash
// run go-server start script 
/usr/share/go-server/server.sh 

让它运行,在我的情况下,它成功地启动了gocd。

  1. 清理工作目录rm-rf/var/lib/go服务器/work/

  2. 现在从ContainerStation 重新启动容器

在我的情况下,它正确启动,没有未知主机异常

为什么?(DNS缓存,权限,一些初始化会无声地失败吗?)

事实证明,这个问题与ACL有关,ACL只允许root用户读取/etc/hosts和/etc/resolv.conf。因此,在不同用户的容器内运行的java应用程序无法访问这些文件。

请。有关详细信息,请参阅此讨论:。

为什么我在Docker容器内拥有读取权限的文件上被拒绝权限?

如果你想将GOCD与QNAP一起使用,你可以尝试使用这个容器https://hub.docker.com/r/rshestakov/docker-gocd-server/

其中包括以下修复:

# modify ACL so go user would have read access
# to /etc/hosts and /etc/resolv.conf
# this is to avoid HostUnknown exception which happends
# when the gocd container is used on QNAP with ContainerStation
setfacl -m user:${USER_ID}:r /etc/resolv.conf
setfacl -m user:${USER_ID}:r /etc/hosts

相关内容

  • 没有找到相关文章

最新更新