2017-07-17 11 views
1

同じデータボリュームコンテナを共有するcouchdbの2つのインスタンスを実行しようとしています。同じデータボリューム上の2番目のコンテナを開始しない

私は、以下のコマンドを

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 

データを1つに入れて、もう一方からアクセスしようとします。

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 

2番目の理由は、接続が拒否されていることです。原因がわからないためです。

UPDATE

私がデータにアクセスするために間違ったポートでコンテナIPを使用していたように見えます。 しかし、couch dbのデータボリュームを共有するのは、すでに実行中のコンテナと共有されていないようです。

+0

'ドッキングウィンドウは何を示してps'ん:

これにより、各コンテナのIPをお知らせしますか! – Leon

+0

docker ps コンテナIDイメージコマンドステータスポート名を指定してください 4cfe49a7be57 klaemo/couchdb "tini -/docker-e ..." 2時間前4369/tcp、9100/tcp、0.0.0.0:5985-> 5998/tcp couchdb-2 f793b380d8dc klaemo/couchdb "tini -/docker-e ..." 2時間前4369/tcp、9100/tcp、0.0.0.0:5984-> 5984/tcp couchdb-1 – jtkSource

答えて

1

これは-p 5985:5984を意味します:HostPort => 5985、ContainerPort => 5984。同じデータボリュームを持つ新しいコンテナを開始すると、共有されます。
コンテナIPに直接アクセスする場合は、ContainerPortを使用する必要があります。それ以外の場合はlocalhost:5985にカールします。

また、この172.17.0.2は1つのコンテナのIPであり、両方のために使用しています。

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

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

私は両方のコンテナのIPアドレスがそれぞれ172.17.0.2と172.17.0.3であることを調べました。私は02アドレスを使用してコンテナを叩くことができますが、03は接続を拒否しています。 curl -H "Content-Type:application/json" -d '{"value3": "ORielly"}' http://172.17.0.3:5985/db curl:(7)172.17.0.3に接続できませんでしたポート5985:接続が拒否されました。 localhostの使用に関するあなたの提案はうまくいくようですが、02:5984で動作する理由と03:5985で動作しない理由は分かりません。また、彼らは同じデータボリュームを共有しているので、私はアクセス可能でなければなりません。 – jtkSource

+0

私はコンテナデータにアクセスできるすべてのポートがあると思います: "http:// localhost:5985/db/_all_docs" "http:// localhost:5984/db/_all_docs" " http://172.17.0.3:5984/db/_all_docs " " http://172.17.0.2:5984/db/_all_docs " – jtkSource

+0

正しくアクセスできましたが、データボリュームを共有してもデータを共有できないようです... – jtkSource

関連する問題