创建了一个apache webserver作为Docker容器,但想在windows os浏览器上以localhost的身份访问它。
我可以使用boot2docker私有IP地址访问网络服务器,该地址为192.168.59.103,但是希望以localhost即127.0.0.1的身份访问网络服务器。
以下是我的Docker Container设置
在Oracle VM上运行Boot2docker 暴露的端口:" EXPOSE 80 443"在docker文件中
用于创建Docker文件的命令:
docker run --net=host --name=webserver1 -v /home/data:/data/www/www.samplewebserber.com -v `password`:/scripts -d folder/serverfolder /scripts/run.sh
答案 0 :(得分:15)
boot2docker实际上在你的Mac OS中用VirtualBox创建了一个带有linux core的vm,而192.168.59.103就是那个vm的ip。
因此您需要为该虚拟机设置一个前进端口
请注意,在Mac OS中,端口80需要较高的权限,因此我在此示例中使用8080。
答案 1 :(得分:5)
如果要访问localhost到端口80和443,则需要执行两个操作:
首先,在创建容器时,必须专门指定端口映射。如果使用docker run
选项运行-P
,则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链接建议的那样,您必须使用SSH隧道进行端口转发:
boot2docker ssh -L 80:localhost:80
boot2docker ssh -L 443:localhost:443
如果愿意,您可以更改为端口映射。