1

コンテナ ステーションの QNAP (TS-451 x86 ベース、ファームウェア 4.2.0) でgocd docker コンテナ ( https://hub.docker.com/r/gocd/gocd-server/ ) を実行しようとしています。

コンテナが起動せず、java.net.UnknownHostException: が発生します。

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

コンテナー イメージは問題ありません。vagrant Ubuntu vm でまったく同じ gocd docker コンテナーを問題なく実行しました。

そのため、この問題は QNAP Linux (Ubuntu 4.1.2 のようです) に何らかの形で関連しています。

[~] # cat /proc/version Linux バージョン 3.12.6 (root@NasX86-12) (gcc バージョン 4.1.3 20070929 (プレリリース) (Ubuntu 4.1.2-16ubuntu2)) #1 SMP Fri Mar 11 02:20: 16 CST 2016)

java.net.UnknownHostException 例外を回避する方法はありますか?

4

2 に答える 2

0

この問題は、ルートのみに /etc/hosts および /etc/resolv.conf への読み取りアクセスを許可する ACL に関連していることが判明しました。そのため、コンテナー内で別のユーザーが実行している Java アプリケーションは、これらのファイルにアクセスできません。

お願いします。詳細については、次のディスカッションを参照してください。

Docker コンテナー内の読み取りアクセス許可を持つファイルでアクセス許可が拒否されるのはなぜですか?

QNAP で GOCD を使用する場合は、このコンテナーを使用してみてください 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
于 2016-06-05T18:17:16.827 に答える