私はいくつかのVirtualBoxでドッカーウォームモードを試しています。 私はドッカーのスウォームモード - ワーカーノードに公開されていないポート
docker swarm init --advertise-addr 192.168.15.4 --listen-addr 192.168.15.4
はワーカーノードに参加するとマネージャーの群れを作る完璧に動作します。だから私は1つのマネージャーノードと1つのワーカーノードを持っています。次に、公開されたポートを持つ2つのサービスを展開しています(1つは公開されたポート3306がmysql用で、もう1つは公開されたport 3000でnode.jsアプリケーション用)。
docker service create --name mysqlbox --publish 3306:3306 mysqlimage
docker service create --name nodebox --publish 3000:3000 nodeimage
さて、問題は、私はcurl docker-manager:3306
とそれに接続することができますが、ワーカーノード上で実行されているサービスは、そのポート(3000)を露出しないように、管理ノード上で実行されているサービスは、そのポートcorrectyを公開するということです私はそれに接続することはできませんcurl docker-worker:3000
とホストに。ポートが公開されている場合は、すべてのノードで使用できるはずですが、これは問題ありません。 netstat
ですべてをチェックしました。マネージャノードでは、ポート(3306)は表示されますが、他のノードにはポート3000はありません。 マネージャノード上のnode.jsサービスとmysqlサービスがワーカーノード上で実行されている場合も同じことが起こります。その後、node.jsサービス用のポートがマネージャノードに公開され、ワーカーノード上のmysqlサービスに接続できません。
誰かが私にヒントを与えることができますか?
Iは、2つのノードで群れモードでnginxのを展開します。公開ポートは8080であり、2つのノードが8080ポートの受信を待機しているが、マネージャノードだけがcurlコマンドを使用して到着できる。多分あなたは 'docker service ps' –
onebraveman
を使ってマルチコンテナを起動するかどうかを見ることができます。 – EastOcean