web-dev-qa-db-ja.com

docker runコマンドで--net = Hostが指定されている場合、Dockerコンテナはポートを公開しません

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コマンド。

26
arevur

Dockerバージョンは1.10.1です。 Dockerコンテナには、ポートが公開されているホストと同じIPが必要です。

--net=Hostを使用すると、コンテナにホストネットワークスタックを使用するように指示します。したがって、ホストへのポートをexposeすることはできません。これは、isホスト(ネットワークスタックに関する限り)。

docker inspectは公開ポートを表示しない場合がありますが、ポートでリッスンしているアプリケーションがある場合、ホストで実行されているかのように利用可能になります。

21
dnephin

この答えに戸惑いました。どうやら私の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

私が確信していることはわかりません。

14
Shane Gannon