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,则需要执行两个操作:
-
首先,在创build容器时,必须明确指定端口映射。 如果使用
-P
选项docker run
dockerdocker 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
-
为了将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。