Docker容器只能在端口80上工作

我在多台机器上(Win10和服务器2016)尝试了这一点,使用本教程的结果相同: https : //docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell

这工作

docker run -d -p 80:80 --name webserver nginx 

任何其他端口,失败

 docker run -d -p 8099:8099 --name webserver nginx --> ERR_EMPTY_RESPONSE 

看起来像Docker / Nginx正在监听失败的端口,但失败。 Telneting到这个端口显示请求通过,但立即断开连接。 这与根本没有听到端口的情况不同。

该列表中有两个端口。 第一个端口是一个docker在主机上发布的远程连接。 第二个端口是在容器中发送stream量的地方。 Docker不会修改应用程序,所以应用程序本身需要监听第二个端口。 默认情况下,nginx监听端口80.因此,您可以运行:

 docker run -d -p 8099:80 --name webserver nginx 

要在端口8099上发布,并将该stream量发送到侦听端口80的容器内的应用程序。