15

私は 2 つのノード、1 つのマネージャーと 1 つのワーカーで swarm をセットアップしました。アプリケーションにアクセスできるように、swarm でポートを公開したいのですが、どうすればこれを達成できるのでしょうか。

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

これにより、docker-compose up を実行するとポート 80 が公開され、問題なく動作しますが、バンドルされたデプロイを実行すると

docker deploy my-service

これはポートを公開しないため、ポートを指すのではなく、docker ps で 80/tcp と表示されます。おそらくこれは、ロードバランサーを接続するか、派手なコマンドを実行するか、別のレイヤーの構成を追加して、このポートをマルチホストの群れで実際に公開する必要があるためです。

これをポートに公開するために構成/実行する必要があることを誰かが理解するのを手伝ってくれますか?

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

更新: アプリケーションをデプロイした後に次のコマンドを実行すると動作するようです

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

HA プロキシを実行するためのこのリポジトリを見つけました。これは素晴らしいようで、docker 自体によってサポートされていますが、新しい swarm モードを使用して、これをサービスに個別に適用することはできないようです。

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

下部に、ネットワークがどのように見えるべきかを説明する素晴らしい説明があります。

Internet -> HAProxy -> Service_A -> Container A

ただし、docker service create コマンドを使用してサービスをリンクする方法を見つけることができません。ネットワークをセットアップする方法のように最適に見えます。このネットワークをサービスに適用すると、HAProxy でそれが取得されます。

-- マーカス

4

3 に答える 3

17

現時点で私が理解している限り、次のように、作成後にサービスを更新するポートを公開できます。

docker service update my-service --publish-add 80:80
于 2016-11-09T15:19:52.687 に答える