2017-12-21 8 views
2

私はDockerのEXPOSE vs -pと混同しています。ここで私が理解していることは:EXPOSEはコンテナ間の通信にのみ使用され、外部からはアクセスできません。-pフラグはEXPOSEを上書きしますか?

しかし、開発者ガイドは、「EXPOSE命令はポートを実際に公開していません。画像を作成する人物と、ポートを公開するポートに関するコンテナを実行する人物の間のドキュメントの一種として機能します"

は、それは私が持っている場合は露出上書きします-pフラグとコンテナが8002で公開されます8001として公開し、8002として-pことを意味するのでしょうか?私は「出版」という言葉に混乱していると思います。

+0

「ドッカーの「公開」と「公開」の違い」(https://stackoverflow.com/questions/22111060/difference-between-expose-and-publish-in-docker) – tgogos

答えて

0

EXPOSEあなたのコンテナがこのポートがドッカーネットワーク内のアクセス可能になることを意味

-pフラグは、上記のすべてが、たとえば、あなたの外部通信

する手段

EXPOSE 8001 - ドッカーネットワーク内で露出

-p 8002:8001 -

外8002への内部8001からポートを作りますあなたが引用された開発者向けドキュメントが正確である
+0

私はあなたと思った画像にポートを公開する方法を指定できませんでしたか? "PORT"は存在しません。-pのみが許可されます。正しい? – ethankong113

+0

Dockerfileに 'PORT'コマンドがありません。また、同じネットワーク上のコンテナ間に公開されていないポートに接続することもできます。 ethankong113 @ – BMitch

+0

は、正しいはい、 'ports'キーワードは、私は実行時にそれを渡すときEXPOSE上書き--exposeんドッカ-compose' – SatanDmytro

1

、DockerfileでEXPOSEエントリはイメージを実行しているユーザーにイメージを作成する開発者から文書です。あなたは-Pその後、ドッキングウィンドウは、ホスト上のすべての露出のポートを公開します使用している場合

(小文字のオプションは異なるもの大文字のPを、注意してください)。コンテナへの通信コンテナについては

、あなただけの同じドッキングウィンドウのネットワークにする必要があります。コンテナはアプリケーションが直接リッスンしているポートで話し、ポートの公開やホストへの公開は必要ありません。

実行時に-pオプションを使用してポートを公開し、ホストからのポートをコンテナ内のポートにマップして、ドッキングステーションの外で利用できるようにします。ポートを公開することは、-pでの公開には影響しません。それは単なるドキュメントであり、画像内のメタデータです。

+0

'で使用されていますか?そして-pはEXPOSEも上書きしますか? – ethankong113

+0

@ ethankong113誰も '--expose'を使ったことはありませんでしたが、' -P'オプションで利用可能なポートが増えています。 '-p'はパブリッシュするためのもので、ポートをマップするために使用され、ドキュメントを公開するポートは気にしません。 – BMitch

関連する問題