docker windows 暴露的端口无法从主机外部访问

docker windows exposed ports cannot be accessed from outside the host

我在 Windows 10 主机(运行 Linux 容器)上安装了 Docker:

Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Tue Mar 28 00:40:02 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.03.1-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Fri Mar 24 00:00:50 2017
 OS/Arch:      linux/amd64
 Experimental: true

我运行一个像这样的简单命令:

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

从我的主机,我可以使用 http://localhost, http://127.0.0.1, http://192.168.1.151 (eth0), http://172.24.1.16 (eth1) 等访问它

但是,从主机外部,在 192.168.1.0/24 和 172.24.1.0/24 子网上,访问 Web 服务器 returns 时出现超时错误。

docker 内的 linux 机器已经配置为公开端口。

100 次中有 99 次是 Windows 防火墙。尝试完全关闭它。

如果这不起作用,可以将 --cap-add=NET_BIND_SERVICE 添加到您的 docker run 命令(通过 https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities)。

我必须允许 %ProgramFiles%\Docker\Docker\resources\vpnkit.exe 通过 Windows 防火墙。