私は現在、Docker Composeファイル経由で単一のホスト上で実行しているアプリケーションを持っています。コンテナは、RabbitMQコンテナを介して互いに通信します(したがって、それらはすべてリンクされています)。アプリケーションは私の単一のホストが提供できるよりも多くのリソースを必要とし始めているので、Docker Swarmは理想的だと思ったのは、同じComposeファイルを経由して同じコンテナのセットをスピンアップできるということです。Docker Swarm + Docker作成:異なるノードでリンクされたコンテナを実行していますか?
しかし、リンクされたコンテナは同じノード上に存在するように制約されているため、複数のノードにDocker Swarmを設定しても、私が探しているコンテナ配布にはなりません。
アンバサダーパターンは、(各ノードのリンクされたコンテナーのプロキシーを設定することによって)リンクされたコンテナーを分離するために推奨される方法のようですが、ドッカーの作成ファイルでは、共有サービス(私の場合はRMQ)を実行しているノードのIPを使用して、クライアントのアンバサダーコンテナにリンクされたサービスのデータをどこにルーティングするかを伝える環境変数を設定しますhttps://docs.docker.com/engine/admin/ambassador_pattern_linking/)。これをComposeファイルに変換すると、サービスが実行されるIPを知る必要はありません(Docker SwarmはComposeファイルの完成後にこれを決定するでしょう)。