0

3つのプロジェクトがあり、それぞれ異なるホストに配置されています。すべてのプロジェクトは独自のRabbitMQコンテナを持っています。しかし、私は3つのホストを持つクラスタを作成する必要があります。同一の仮想ホストを使用しますが、異なるユーザー/ログインのペアを使用します。RabbitMQクラスタを別のホストと異なるプロジェクトでドッキングする -

私はSwarmとオーバーレイネットワークを試していましたが、swarmは単独のコンテナを実行することを目的としていて、動作しません。また、私はドッキングウィンドウ-コンバンドルを試みたが、これは予想通り:(動作していない

私はそれのような何かをうまくいくことを想定

この

は、管理ノード上で

1)私は、オーバーレイネットワークを作成

2)すべての作成ファイルで、overlayネットワークでrabbitmqコンテナのネットワーク設定を拡張します。

3)期待通りに動作し、インターネットrabbitmqポートに公開しません。


どうすればいいですか?

答えて

1

あなたのアプローチは正しいですが、現時点ではDocker Compose doesn't work with Swarm Modeです。作成するだけでdockerコマンドが実行されるので、代わりに必要なスクリプトを作成できます。各プロジェクトのためには、このようなスクリプトを持っていると思います:

docker network create -d overlay app1-net 
docker service create --network app1-net --name rabbit-app1 rabbitmq:3 
docker service create --network app1-net --name app1 your-app-1-image 
... 

あなたがマネージャー上のすべての3つのスクリプトを実行すると、あなたは3つのネットワークを持っています、各ネットワークは、デフォルトでは、独自のRabbitMQサービス(ちょうど1の容器を持っています複数を実行する場合は--replicasを使用してください)。ネットワーク内では、他のサービスはDNS名rabbit-appXによってメッセージキューに到達できます。ポートを公開する必要はないため、RabbitはDockerネットワークの外部にはアクセスできません。

+0

つまり、私は、コンテナファイルのサービスとして 'docker service create'コマンドで定義されたすべてのコンテナを実行する必要がありますか?しかし、ボリュームについてはどうですか?たとえば、いずれかのプロジェクトで使用されていたMariaDBやRedisの場合は、 – ErickSkrauch

+1

これは、[docker service create]の '--mount'オプションで行うことができます(https://docs.docker.com/engine/reference/commandline/service_create/#/differences-between---mount-and- - ボリューム)。ホストがダウンするとコンテナが動き回るので、共有ボリュームドライバが必要になりますので注意してください。 –

+0

便利なリンクありがとうございます。私は、それは私の質問のための解決策だと思う。それほど便利ではありません...しかし、それは動作するはずです。 'docker-compose bundle'と' docker deploy'(私はDocker 1.12.2-rc2をインストールしました)はどうですか?それは同じように動作しますか? – ErickSkrauch

関連する問題