4

2つのノード、1つのマネージャー、1つのワーカーで設定されたswarmがあります。私はポートに刊行して、私のアプリケーションにアクセスできるようにしたいと思います。私はこれをどのように達成するのだろうかと思います。docker deployはswarmにポートを公開しません

version: '2' 
services: 
    server: 
    build: . 
    image: my-hub.company.com/application/server:latest 
    ports: 
     - "80:80" 

私がドッキングウィンドウ-構成し、それがうまく動作しますが、私はバンドルデプロイ

docker deploy my-service 

を実行したときしかしこれは、ポートを公開しないので、それだけで言う実行したときにこれがポート80を公開ポートを指すのではなく、docker psの80/tcpこれは、ロードバランサを接続するかファンシーなコマンドを実行するか、別のレイヤーを追加して実際にこのホストを複数ホストのスートに公開する必要があるためです。

これをポートに公開するには、設定/実行する必要があることを誰かが理解できるようになりますか?

ベストケースのシナリオは、ポート80が公開されていることです。別のホスト名からアクセスすると、別のアプリケーションに送信されます。

更新: 私がHAプロキシを実行しているため、このリポジトリを見つけ

docker service update -p 80:80 my-service_server 
docker kill <my-service_server id> 

アプリケーションをデプロイした後、私は次のコマンドを実行した場合動作しているようですが、それは私がしかし、偉大なようで、ドッキングウィンドウ自身によってサポートされています新しいスウォームモードを使用してこのサービスを私のサービスに別々に適用することはできません。私は、コマンドを作成ドッカサービスを介してサービスをリンクする方法を見つけることができませんしかし

Internet -> HAProxy -> Service_A -> Container A 

は、最適に今のようになります。

https://github.com/docker/dockercloud-haproxy

ネットワークがどのように見えるべきか記述する下での素敵な説明がありますネットワークを設定する方法です。このネットワークをサービスに適用すると、HAProxyでそのネットワークを選択します。

- Marcus

答えて

4

Swarmモードは、ポートを別の方法で公開します。 docker psには表示されません。ホスト上にポートを公開していないため、すべてのノードにポートを公開するため、サービスレプリカ間で負荷を分散できます。

docker service inspect my-serviceからポートが表示されます。

その他のサービスは、私の知る限りは、一瞬理解されるようにあなたはこのように、サービスを後で作成を更新ポートを公開することができmy-service:80

+0

私のサービスでポートを公開ポートとして公開したくない場合(swarmの外に公開)、そのサービスを他のサービスで使用するために(swarm内に)内部に公開したい群れ。 –

+0

それから、何もする必要はありません。これは、サービスがすべてデフォルトネットワーク上にあるか、またはすべてが同じネットワークに参加している限り、デフォルトの動作です。 – dnephin

5

に接続することができます:

docker service update my-service --publish-add 80:80 
0

docker service lsますポートマッピングを表示します。

関連する問題