docker では、expose は情報にマークを付けることを意味し、ドキュメント表現の 1 つの方法です。expose により、開発者は dockerfile 内の Image によってどのサービスが開かれているかをすぐに理解できます。ポートを直接開くことはできないため、操作に便利です。保守担当者はコンテナを使用する際にどのポートを開けばよいかを知っており、公開ポートがなければコンテナ間のサービスも相互にアクセスできます。
このチュートリアルの動作環境: linux7.3 システム、docker バージョン 19.03、Dell G3 コンピューター。
Dockerfile でのエクスポーズはタグ情報です。 ポートは直接開くことができないため、運用保守担当者がオープンすることを知っています。コンテナを使用するときのポートです。 docker run -itd -P xxx:xxx を使用する場合、大文字の -P は、Dockerfile ファイル内の EXPOSE を使用して定義されたポートをマップします。この形式で手動で -p: を実行する必要はありません。
EXPOSE はドキュメント表現の単なる方法です。dockerfile では、開発者は Image によってどのサービスが開かれているかをすぐに理解できます。実際的な意味はありません。 EXPOSE ポートがない場合、コンテナ間のサービスも相互にアクセスできます。
Docker での公開と公開 (run -p) の違い
ここでの主な記録は、最近 docker を使用して発見した小さな疑問です。要約すると:
docker では、コマンド ラインの開始時に docker run -p で公開されたインターフェイスと dockerfile で公開されたインターフェイスの間の違いと接続は何ですか。
具体的な説明は次のとおりです。
たとえば、最初に Dockerfile でポート 8080 を公開します
EXPOSE 8080
次に、このイメージをビルドします。後で使用するための使用
docker build -t myimage - Dockerfile
次のステップは、docker run を使用してこのイメージのコンテナー インスタンスを開始し、ポートを公開することです
docker container run -d -p 8080 myimage
ここで言及した質問があります。すでに Dockerfile に追加されているので、ここでポート 8080 を公開することが宣言されていますが、このポート (-p) を公開する必要があります。 2 つの違いと接続は何ですか?
docker container run -d myimage
を直接実行できますか? この場合、公開されているポートはありますか?
テスト後(テストプロセスは省略していますが、興味のある友達は自分でテストできます。実際、この2つには本質的な違いがあり、ある程度の相関関係もあります。
これら 4 つの組み合わせをここにリストします。
A、Dockerfile で公開も -p
B も実行せず、Dockerfile でこのポートのみを公開します
C、同時に公開しますDockerfile で -p
D を実行し、-p
1 のみを実行します-----ケース A の場合、このコンテナーで開始します ホスト host はサービスにアクセスできません外部ネットワーク、またはリンク コンテナーによっても使用できません。このコンテナー内でのみ使用できます。
2--------ケース B の場合、このコンテナーで開始します。このサービスには、次のユーザーはアクセスできません。 Docker の外部の世界 (ホストおよび他のホスト) ですが、コンテナーを介して他のリンクのコンテナーからアクセスできます
link
3----------ケース C の場合、開始されたコンテナーには、docker の外部とリンクのコンテナーの両方からアクセスできます。
4--------ケース D の場合、実際には、docker は特別な暗黙的な変換を行っています。ケース C と同等で、外部またはリンクのコンテナーからアクセスできます (これは、docker がポート
# を外部に開く必要があるため、他のコンテナーと同等であると考えているため当てはまります。確実にアクセスされるため、docker は自動的に Expose を実行します。
推奨される学習: "docker ビデオ チュートリアル "
以上がdocker での公開とはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。