26

1 つの Docker コンテナーで rabbitmq-server を実行し、セロリを使用して別のコンテナーから接続したい ( http://celeryproject.org/ )

以下のコマンドを使用してrabbitmqを実行しています...

sudo docker run -d -p :5672 markellul/rabbitmq /usr/sbin/rabbitmq-server

セロリを実行する

sudo docker run -i -t markellul/celery /bin/bash

http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.htmlで接続を検証するための非常に基本的なチュートリアルを実行しようとしているとき

接続拒否エラーが発生します:

consumer: amqp://guest@127.0.0.1:5672// に接続できません: [Errno 111] 接続が拒否されました。

セロリと同じコンテナにrabbitmqをインストールすると、正常に動作します。

コンテナが相互にやり取りするにはどうすればよいですか?

4

7 に答える 7

6

コンテナの IP を取得し、別のコンテナから接続するだけです。

CONTAINER_IP=$(sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' $CONTAINER_ID)
echo $CONTAINER_IP
于 2014-01-25T00:38:34.370 に答える
3

-p 5672 を指定すると、docker はホストで 49xxx などの新しいポートを開き、コンテナーのポート 5672 に転送します。

次のコマンドを実行すると、コンテナに転送しているポートを確認できるはずです。

sudo docker ps -a

そこから、次のようにホスト IP アドレスに直接接続できます。

amqp://guest@HOST_IP:49xxx

各コンテナは基本的に独自のローカルホストであるため、ローカルホストを使用することはできません。

于 2013-08-27T23:05:44.740 に答える
1

設計上、別のコンテナに直接接続することはできないと思います-それはホストの責任です。ボリュームを使用してコンテナー間でデータを共有する例は、ここhttp://docs.docker.io/en/latest/examples/couchdb_data_volumes/にありますが、それがあなたが探しているものだとは思いません。

私は最近https://github.com/toscanini/maestroについて知りました- それはあなたのニーズに合っているかもしれません。もしそうなら教えてください:)、私はまだ自分で試していません。


編集。ここで、ネイティブの「コンテナーの配線とサービスの検出」がロードマップにあることを確認できることに注意してください。遅くとも7.0か8.0だと思います。

于 2013-08-27T16:04:14.500 に答える
1

DockerインスタンスのIPを取得するには...

CID=$(sudo docker run -d -p :5672 markellul/rabbitmq /usr/sbin/rabbitmq-server); sudo docker inspect $CID | grep IPAddress

しかし、それはあまり役に立ちません。

パイプワークを使用して、 dockerコンテナー間にプライベート ネットワークを作成できます。

于 2013-09-12T07:30:42.520 に答える
0

これは現在 0.8 ロードマップにあります。

https://github.com/dotcloud/docker/issues/1143

于 2013-09-10T07:39:02.223 に答える