在相同的数据量上启动第二个容器不起作用

时间:2017-07-17 11:31:50

标签: docker

我正在尝试运行两个couchdb共享相同数据卷容器的实例。

我使用以下命令

创建了容器
docker create -v /opt/couchdb/data --name couchdb-data debian:jessie /bin/true

然后开始使用同一卷上的容器。

docker run -d -p 5984:5984 -v /opt/couchdb/data --name couchdb-1 --volumes-from couchdb-data klaemo/couchdb
docker run -d -p 5985:5984 -v /opt/couchdb/data --name couchdb-2 --volumes-from couchdb-data klaemo/couchdb

我将数据放在一个并尝试从另一个访问。

curl -H "Content-Type: application/json" -d '{"value":"ORielly"}' http://172.17.0.2:5984/db 
{"ok":true,"id":"9071064ff053a75d3c639fbf8d00098c","rev":"1-8b72db504e321c6d49070196dc426a19"}
curl -H "Content-Type: application/json" -d '{"value2":"ORielly"}' http://172.17.0.2:5985/db
curl: (7) Failed to connect to 172.17.0.2 port 5985: Connection refused

第二个拒绝连接 - 不确定原因是什么。

更新

看起来我正在使用容器IP和错误的端口来访问数据。 但是,看起来在沙发数据库中共享数据量似乎与已经运行的容器共享。如果您启动具有相同数据量的新容器,它确实会被共享

1 个答案:

答案 0 :(得分:1)

这:-p 5985:5984表示:HostPort => 5985,ContainerPort => 5984。
如果直接访问容器IP,则需要使用ContainerPort。否则卷曲到localhost:5985

此外,此172.17.0.2是一个容器的IP,您正在使用它。

这将让您了解每个容器IP:

docker inspect couchdb-1 -f '{{.NetworkSettings.Networks.bridge.IPAddress}}'

docker inspect couchdb-2 -f '{{.NetworkSettings.Networks.bridge.IPAddress}}'