从主机Web浏览器访问驻留在Docker容器内的apache2

时间:2014-07-26 08:52:12

标签: linux apache ubuntu docker boot2docker

我一直在创建一个Web服务器作为Docker容器并尝试在容器外部访问它。但我不能。我正在做的是。

- 删除ubuntu图像:

docker pull ubuntu:14.04

- 启动容器:

docker -t -i -p 49200:2375 [image-id]

在新启动的容器中安装apache2之后我可以ping容器内的apache2服务器,我也可以做卷曲并在容器终端看到结果,但在主机上没有运气。我已多次尝试过。 (我在Windows上使用Virtual Box)

截屏:

docker 1

docker 2

问题:

  1. 我使用正确的泊坞窗命令和端口号来创建容器。
  2. apache配置有什么问题。 (我在默认模式下使用apache而没有任何配置)
  3. 我的虚拟机或电脑上的端口是否有问题。我对网络知识很低。
  4. 有人可以帮忙!!!

1 个答案:

答案 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主机的端口

  • apache docker container:172.17.0.7:80
  • docker host = virtualbox VM:192.168.59.103:49200
  • virtualbox host = MacOS:xxxx:49200