我一直在创建一个Web服务器作为Docker容器并尝试在容器外部访问它。但我不能。我正在做的是。
- 删除ubuntu图像:
docker pull ubuntu:14.04
- 启动容器:
docker -t -i -p 49200:2375 [image-id]
在新启动的容器中安装apache2之后我可以ping容器内的apache2服务器,我也可以做卷曲并在容器终端看到结果,但在主机上没有运气。我已多次尝试过。 (我在Windows上使用Virtual Box)
截屏:
问题:
有人可以帮忙!!!
答案 0 :(得分:2)
问题1 :Apache默认端口
2375
端口不是apache的默认端口,它是docker守护进程的默认端口,命令应为
docker -t -i -p 49200:80 [image-id]
问题2 :不同机器中的端口
49200:80
这是从内部端口80
到 docker host 49200
的映射,docker主机实际上是您的虚拟机VM(猜测是您的boot2docker壳)
在虚拟框VM控制台中,您可以
curl localhost:49200
图片“端口转发规则”正在帮助您的端口转发到您的虚拟机主机,因为您是MacOS,您将49200
映射到MacOS 49200
因此,在MacOS shell控制台中,您也可以
curl localhost:49200
如果您知道虚拟机VM(泊坞主机)IP地址,例如它是192.168.59.103
默认的boot2docker,那么您可以
curl 192.168.59.103:49200
如果你想通过172.17.0.7
访问apache docker容器,请记住这是私有网络,你需要启动另一个容器,如
docker -t -i busybox bash
# curl 172.17.0.7:80
docker -p
是将您的内部端口转发到docker主机的端口
虚拟机设置中的“端口转发规则”是将VM端口转发到VM主机的端口