Dockerファイルを使用してホスト上の特定のポートをコンテナポートにバインドする方法はありますか
Dockerファイルに次の項目があります ステップ1:EXPOSE 8090:8080
しかし、docker run を実行すると、docker ファイルに記述されているように、コンテナはポート 8090 ではなくポート 8080 にバインドされます。
dockerファイルを使用してこれを達成する方法、またはこれを達成するためのより良い方法はありますか。
Dockerファイルを使用してホスト上の特定のポートをコンテナポートにバインドする方法はありますか
Dockerファイルに次の項目があります ステップ1:EXPOSE 8090:8080
しかし、docker run を実行すると、docker ファイルに記述されているように、コンテナはポート 8090 ではなくポート 8080 にバインドされます。
dockerファイルを使用してこれを達成する方法、またはこれを達成するためのより良い方法はありますか。
あなたが説明したように、ドッカーがEXPOSE
機能を実装していることを確認できません。
ドキュメントから:
公開
EXPOSE <port> [<port>...]
この
EXPOSE
指示は、コンテナーが実行時に指定されたネットワーク ポートでリッスンすることを Docker に通知します。Docker はこの情報を使用して、リンクを使用してコンテナーを相互接続します ( Docker User Guideを参照してください)。
EXPOSE
vagrantforwarded_port
機能と同等ではありません。
コンテナをリンクする必要がある場合に便利です。
ポートをコンテナーからホストに転送する必要がある場合は、-p
フラグを使用します。
例:
docker run -it -p 80:80 5959f94a4d10 /bin/bash
Dockerファイルを使用してホスト上の特定のポートをコンテナポートにバインドする方法はありますか
いいえ。はポータブル構成Dockerfile
のみを含むように設計されています。ホスト ポートはすべてのシステムで使用できるとは限らないため、ホスト ポートへのバインドは移植性がありません。これらの構成フラグは実行時に使用できる場合がありますが、Dockerfile 構文 (および結果の Docker イメージ) には含まれていません。
内部では、ホスト ポートとその他の移植性のない構成 (ボリューム マウントなど) はHostConfig
、コンテナーの構造の一部です。これらは、コンテナーの実行時にのみ使用できます。