docker-compose の ports と expose の違いは何ですか? 質問する

docker-compose の ports と expose の違いは何ですか? 質問する

portsのオプションとexposeオプションの違いは何ですかdocker-compose.yml?

ベストアンサー1

によるdocker-compose リファレンス

ポートと定義されている:

ポートを公開します。両方のポート (HOST:CONTAINER) を指定するか、コンテナ ポートのみ (ランダムなホスト ポートが選択されます) を指定します。

  • docker-compose.yml に記載されているポートは、docker-compose によって開始されるさまざまなサービス間で共有されます。
  • ポートは、ランダムなポートまたは指定されたポートにホスト マシンに公開されます。

私のdocker-compose.yml見た目は次のようになります:

mysql:
  image: mysql:5.7
  ports:
    - "3306"

そうするとdocker-compose ps、次のようになります。

  Name                     Command               State            Ports
-------------------------------------------------------------------------------------
  mysql_1       docker-entrypoint.sh mysqld      Up      0.0.0.0:32769->3306/tcp

さらすと定義されている:

ポートをホスト マシンに公開せずに公開します。ポートはリンクされたサービスからのみアクセス可能になります。指定できるのは内部ポートのみです。

ポートはホスト マシンには公開されず、他のサービスにのみ公開されます。

mysql:
  image: mysql:5.7
  expose:
    - "3306"

そうするとdocker-compose ps、次のようになります。

  Name                  Command             State    Ports
---------------------------------------------------------------
 mysql_1      docker-entrypoint.sh mysqld   Up      3306/tcp

編集

Dockerfileの最近のバージョンでは、EXPOSE 通常運用上の影響はなく、単なる情報提供です。(参照

おすすめ記事