我已经为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地址与长沙发通信,我收到以下错误消息
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)
我可以看到我的应用程序正在使用服务器节点名称,该名称是内部的IP地址,以便与该信息交流,从而导致错误。任何帮助表示赞赏
最佳答案
您的Web应用程序Docker容器无法解析Couchbase Docker容器的主机名。
您需要将Web应用程序容器和Couchbase容器链接在一起。
下面将为您的couchbase实例创建一个名称“couchbase”,此名称稍后将由Web应用程序docker容器引用。
sudo docker run -d --name couchbase <your couchbase image name>
下面将在Web应用程序Docker容器上的/ 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链接”的更多详细信息,请访问https://docs.docker.com/userguide/dockerlinks/
关于docker - Docker容器-Couchbase服务器节点内部IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25152872/