注意:我是一般 Web 管理和 Docker 方面的新手。我的错误可能是由一些非常愚蠢的事情引起的。
我正在为 Windows Server 2016(本机变体)运行 Docker。我已经使用 Nano Server 和 Apache 2.4 (nanoserver/apache24) 提取并构建了一个简单的 Docker 基础映像。我已经从这个图像中创建了一个容器,并将容器端口 80 映射到我的本地端口 8082。
从容器内部,我可以使用Invoke-WebRequest -uri http://localhost:80
和检索默认的 apache 文档。但是,我也希望Invoke-WebRequest -uri http://localhost:8082
从容器外部检索相同的文件。这不起作用。我也尝试过使用容器 NAT 地址,运行Invoke-WebRequest -uri http://172.23.58.7:8082
. 这也不起作用。我在这里配置错误是什么?
下面是我的过程的屏幕截图。左侧是主机中的 PowerShell,右侧是容器中的 PowerShell。
编辑:@Grimmy 在评论部分问我EXPOSE 80
我的 Dockerfile 中是否有,以及docker ps
命令是否显示我的容器以及预期的端口映射。在这两个方面都是肯定的。我的容器使用参数运行,-d -it
因为它是对容器在启动后立即退出的问题的快速 Google 修复。我知道-i
“保持 STDIN 打开”和-t
“分配伪 tty”,但坦率地说,我不明白其中任何一个意味着什么,或者它是否与问题有关。
EDIT2:我没有在原始帖子中明确提到这一点,但值得注意的是,netstat -a -o
它没有显示在端口 8082 上侦听的 PID。我希望会是这种情况。应该是这样吗?
前 50 行左右的输出显示在屏幕截图中。