公開ポートの追加または削除
このステップでは、Docker サービスの公開ポートを追加または削除する方法を学びます。ポートを公開することで、コンテナ内のポートを Docker Swarm クラスタの外部からアクセス可能にします。これは、アプリケーションをユーザーや他のサービスに公開するために不可欠です。
現在の my-service
は、単純な echo
コマンドを実行して終了するだけなので、公開ポートがありません。ポートの公開をデモンストレーションするために、簡単な Web サーバーを実行する新しいサービスを作成しましょう。これには nginx
イメージを使用します。
まず、nginx
イメージを取得します。
docker pull nginx
次に、web-service
という名前の新しいサービスを作成し、コンテナのポート 80 をホストのポート 8080 に公開します。
docker service create --name web-service --publish 8080:80 nginx
このコマンドは、nginx
イメージを使用して web-service
という名前のサービスを作成します。--publish 8080:80
フラグは、コンテナ内のポート 80 をホストのポート 8080 にマッピングします。
サービス ID を示す出力が表示されるはずです。
ポートが公開されていることを確認するには、サービスを調べることができます。
docker service inspect web-service
出力の EndpointSpec
セクションを探してください。Ports
の下に、公開されたポートのマッピングが表示されるはずです(例:PublishedPort: 8080
, TargetPort: 80
)。
次に、web-service
から公開ポートを削除しましょう。これは、--publish-rm
フラグを使用した docker service update
コマンドで行うことができます。コンテナ内のターゲットポートを指定します。
docker service update --publish-rm 80 web-service
このコマンドは、コンテナ内のポート 80 のポートマッピングを削除します。
サービスが更新されたことを示す出力が表示されるはずです。
ポートが削除されたことを確認するには、再度サービスを調べます。
docker service inspect web-service
EndpointSpec
セクションには、削除したポートマッピングが表示されなくなっているはずです。