我为Couchbase创建了docker容器。该服务已启动并正在运行,但使用以下命令
couchbase-cli cluster-init -c $CB_SERVER_IPADDR:8091 --cluster-init-username=admin --cluster-init-password=couchbase --cluster-init-ramsize=2048
我在couchbase中获取了一个服务器节点,其名称为其内部IP地址 - 172.x.x.x.然后,当我使用以下命令创建存储桶时,
couchbase-cli bucket-create -c $CB_SERVER_IPADDR:8091 -u admin -p couchbase --bucket=heartbeat --bucket-type=couchbase --bucket-ramsize=500 --bucket-replica=0 --wait
获取存储桶。但是,当我的Web应用程序位于不同的容器中时,使用与Couchbase服务器运行的docker主机的IP地址与couchbase通信,我收到以下错误消息
2014-08-05 21:49:00.106 INFO com.couchbase.client.CouchbaseConnection: Reconnecting due to exception on {QA sa=172.x.x.x/172.x.x.x:11210, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
java.net.NoRouteToHostException: No route to host
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:485)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:322)
at com.couchbase.client.CouchbaseConnection.run(CouchbaseConnection.java:288)
我可以看到我的应用程序正在使用服务器节点名称,该名称是与couchbase通信的内部IP地址,从而导致错误。任何帮助表示赞赏
答案 0 :(得分:0)
您的Web应用程序泊坞窗容器无法解析couchbase docker容器的主机名。
您需要将Web应用程序容器和couchbase容器链接在一起。
下面将为您的couchbase实例创建一个名称“couchbase”,此名称稍后将被Web应用程序docker容器引用
sudo docker run -d --name couchbase <your couchbase image name>
下面将在您的Web应用程序泊坞窗容器中的/ etc / hosts中添加一个条目“$ your_couchbase_docker_container_IP couchbase”
sudo docker run -d -P --link couchbase:couchbase <your web application image name>
然后在您的Web应用程序中,您可以使用couchbase:8091访问couchbase docker容器
有关“docker link”的详细信息,请访问https://docs.docker.com/userguide/dockerlinks/