Boot2Docker - 将webserver作为localhost访问

时间:2015-02-09 05:27:28

标签: docker portforwarding boot2docker

创建了一个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

2 个答案:

答案 0 :(得分:15)

boot2docker实际上在你的Mac OS中用VirtualBox创建了一个带有linux core的vm,而192.168.59.103就是那个vm的ip。

因此您需要为该虚拟机设置一个前进端口

请注意,在Mac OS中,端口80需要较高的权限,因此我在此示例中使用8080。

enter image description here

答案 1 :(得分:5)

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

  1. 首先,在创建容器时,必须专门指定端口映射。如果使用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
    
  2. 为了将Boot2Docker端口映射到您的主机环境,正如Joe Niland链接建议的那样,您必须使用SSH隧道进行端口转发:

    boot2docker ssh -L 80:localhost:80

    boot2docker ssh -L 443:localhost:443

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