一个asp.net core 3.1创建的默认项目。我打算把它部署到docker,宿主环境是VMware中的CentOS7.我在本地发布了项目,上传到CentOS中,然后运行这行命令:
docker run -d -p 8081:80 -v /home/minyuan/DockerDemo/Project/publish:/app --workdir /app mcr.microsoft.com/dotnet/core/aspnet dotnet /app/ZhaoxiDemo.dll
显示容器是启动起来了,但是我从电脑本地请求虚拟机的8081端口请求不到网站。docker菜鸟一只
请教可能是什么原因。
进入容器内访问试试
docker exec -t 容器id curl -i localhost
执行这条命令可以正常请求到内容。
关了宿主机防火墙也不行?
你端口没做映射吧
端口映射是指?我应该是映射到8081了吧。我写的命令是有 -p 8081:80 这一个参数
本机确认 能连到 虚拟机的地址端口吗?
好像是访问不到地址造成的。但是我xshell能连,应该怎么做?谢谢
@于为源: 本机和虚拟机网络默认是不互连的,你百度一下吧,对网卡有些要求。
建议还是安装 docker windows版吧,部署容器后就可以直接访问了。非家庭版的windows都支持
首先的宿主机上 通过 curl 命令测试一下发布出来的网站是否正常,不正常,再进入容器看输出的日志,正常,那就是宿主的端口防火墙没开,开了就Ok了
关了防火墙。又出现新的错误。。
这个解决问题的思路不对啊,你用的虚拟机就在虚拟机里面执行 curl 就行了
能通就说明 docker 内部没有问题了
然后用虚拟机 IP访问 8081 能行就说明绑定的是 0.0.0.0:8081
然后本机再访问虚拟机端口, 不能就说明是实体机和虚拟机交互的问题了
谢谢您,我给dudu回复的帖子有一个截图,我curl请求docker的localhost 80是正常的,我从虚拟机curl本机8081是失败的。
@于为源: 你可以看看 .net core 监听的是不是 0.0.0.0
在docker里面用 ip 访问,不是用localhost