Boot2Docker – 以localhost的身份访问web服务器

创build一个Apache的Web服务器作为docker的容器,但要访问它在Windows操作系统浏览器作为localhost。

我可以通过boot2docker的私有IP地址访问web服务器,它的地址是192.168.59.103,但是想以localhost身份访问web服务器,例如127.0.0.1。

以下是我的Docker容器设置

在Oracle VM裸露端口上运行Boot2docker:docker文件中的“EXPOSE 80 443”

用于创buildDocker文件的命令:

docker run --net=host --name=webserver1 -v /home/data:/data/www/www.samplewebserber.com -v `password`:/scripts -d folder/serverfolder /scripts/run.sh 

如果要访问本地主机到端口80和443,则需要执行两个操作:

  1. 首先,在创build容器时,必须明确指定端口映射。 如果使用-P选项docker run docker docker run ,则在dockerfile的EXPOSE设置的端口将暴露给Boot2Docker环境中的随机端口。 如果你想专门映射它,你必须运行:

     docker run \ --net=host \ --name=webserver1 \ -v /home/data:/data/www/www.samplewebserber.com \ -v `password`:/scripts \ -d -p 80:80 -p 443:443 \ folder/serverfolder \ /scripts/run.sh 
  2. 为了将Boot2Docker端口映射到您的主机环境,正如Joe Niland链接所build议的那样,您必须使用SSH隧道进行端口转发:

    boot2docker ssh -L 80:localhost:80

    boot2docker ssh -L 443:localhost:443

如果您愿意,您可以更改为端口映射。

boot2docker实际上是在你的Mac OS上用VirtualBox创build了一个vm的linux核心,而192.168.59.103是这个vm的ip。

所以你需要为该虚拟机设置一个端口

请注意,在Mac OS中,端口80需要很高的权限,所以在本例中我使用了8080。

在这里输入图像说明

Interesting Posts