Boot2Docker - 将webserver作为localhost访问

use*_*721 8 portforwarding docker boot2docker

创建了一个apache webserver作为Docker容器,但想在windows os浏览器上以localhost的身份访问它.

我可以使用boot2docker私有IP地址访问web服务器,该地址为192.168.59.103但是想要访问webserver作为localhost即127.0.0.1.

以下是我的Docker Container设置

在Oracle VM Exposed端口上运行Boot2docker:docker文件中的"EXPOSE 80 443"

用于创建Docker文件的命令:

docker run --net=host --name=webserver1 -v /home/data:/data/www/www.samplewebserber.com -v `password`:/scripts -d folder/serverfolder  /scripts/run.sh
Run Code Online (Sandbox Code Playgroud)

Dou*_*Hou 15

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

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

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

在此输入图像描述


Jav*_*oso 5

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

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

    boot2docker ssh -L 80:localhost:80

    boot2docker ssh -L 443:localhost:443

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