【发布时间】:2017-04-29 15:53:53
【问题描述】:
我已经在 docker-compose 中指定了端口映射,但它仍然无法正常工作,我仍然需要使用公开中未指定的端口访问站点
下面是我的docker-compose.yml
version: '2'
networks:
default:
external:
name: nat
services:
website:
build:
context: '.'
dockerfile: "./iis.dockerfile"
ports:
- 3000:8081
以及对应的dockerfile
FROM microsoft/iis
RUN ["powershell.exe", "Install-WindowsFeature NET-Framework-45-ASPNET"]
RUN ["powershell.exe", "Install-WindowsFeature Web-Asp-Net45"]
ADD www/ c:\\webapp
EXPOSE 8081
RUN powershell New-Website -Name 'web-app' -Port 8081 -PhysicalPath 'c:\webapp' -ApplicationPool '.NET v4.5'
我必须使用:http://192.168.105.33:8081/ 访问应用程序,如果我使用端口 3000 进行访问,它将无法正常工作。
我上面的配置有什么遗漏吗?操作系统:windows server 2016,使用带有hyper-v 和docker-compose up -d 的Windows 容器来启动并运行容器...
docker-compose inspect 给我下面的输出
"Ports": {
"8081/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "3000"
}
]
},
docker ps 给我下面的输出
eb7aa1e74b7f website_website "C:\\ServiceMonitor..." 14 minutes ago Up 14 minutes 0.0.0.0:3000->
8081/tcp website_website_1
dokcer-compose ps 给我下面的输出
Name Command State Ports
--------------------------------------------------------------------------------
website_website_1 C:\ServiceMonitor.exe w3svc Up 0.0.0.0:3000->8081/tcp
所以我应该可以在主机上使用端口 3000 访问它。
【问题讨论】:
-
是 192.168.105.33 你的主机或 docker 容器的 IP?
-
它是 docker 容器的 ip,我没有在我的机器上托管站点...我将它托管在 docker 容器中
-
ports将端口从容器映射到您的主机,因此您很可能只需转到http://localhost:3000并在那里找到您的页面 -
您是否使用
docker network ls检查过您的网络?您明确指定了 nat 网络。您是否创建了自定义或使用默认值?docker ps的输出是什么?
标签: docker docker-compose portforwarding