Dockerfile EXPOSE 命令はネットワークに影響を与えない。

Dockerfile EXPOSE 命令の詳細

Dockerfile に書かれた EXPOSE 命令はコンテナが指定されたポートをlistenするプロセスを持つことをDockerに示します。 しかし厳密にはネットワークに何ら影響を与えないので、実質コメントと同義です。

親記事

Docker入門 関連記事

EXPOSE

コンテナが指定されたポートをlistenするプロセスを持つことをDockerに示します。 この情報は、コンテナをリンクするときにDockerによって使用されます。

EXPOSE命令は以下のように書きます。

EXPOSE <port> [<port>/<protocol>...]

厳密にいうと、EXPOSE命令自体は、ネットワークに影響を与えません。 Dockerコンテナからホストシステムにアクセスするためには、docker run時に-pオプションを使用してポートのマッピングを定義する必要があります。

以下のようにdocker run命令に-pオプションを使用してポートを結びつけるように書くことで、Dockerコンテナのポート80をホストシステムのポート8080にマッピングすることができます。

docker run -p 8080:80 my-image

EXPOSE命令は、Dockerコンテナが使用するポートを定義するための基本的な方法を提供しますが、実際にホストシステムとの通信を確立するためには、-pオプションを使用してポートのマッピングを定義する必要があります。