CentOSドッカーホストにCentOSドッカーコンテナーがあります。このコマンドを使用してdocker image docker run -d --net=Host -p 8777:8777 ceilometer:1.x
ドッカーコンテナーはホストのIPを取得しますが、ポートが割り当てられていません。
「--net = Host」なしで同じコマンドを実行した場合docker run -d -p 8777:8777 ceilometer:1.x
dockerはポートを公開しますが、IPは異なります。 Dockerバージョンは1.10.1です。 Dockerコンテナには、ポートが公開されているホストと同じIPが必要です。また、Dockerfile
で命令EXPOSE 8777
が、「-net = Host」がdocker run
コマンド。
Dockerバージョンは1.10.1です。 Dockerコンテナには、ポートが公開されているホストと同じIPが必要です。
--net=Host
を使用すると、コンテナにホストネットワークスタックを使用するように指示します。したがって、ホストへのポートをexposeすることはできません。これは、isホスト(ネットワークスタックに関する限り)。
docker inspect
は公開ポートを表示しない場合がありますが、ポートでリッスンしているアプリケーションがある場合、ホストで実行されているかのように利用可能になります。
この答えに戸惑いました。どうやら私のdockerイメージはポート8080で到達できるはずです。しかし、そうではありませんでした。それから私は読んだ
https://docs.docker.com/network/Host/
引用する
ホストネットワーキングドライバーはLinuxホストでのみ機能し、Docker for Mac、Docker for Windows、またはDocker EE for Windows Serverではサポートされていません。
私はMacを使っているので、それはかなり面倒です。 dockerコマンドは、それが機能することを意図していると考えさせるのではなく、エラーを報告する必要があります。
エラーを報告しない理由に関する議論
https://github.com/docker/for-mac/issues/2716
私が確信していることはわかりません。