Boot2Docker - Access webserver as localhost

2019-02-09 11:45发布

问题:

Created a apache webserver as Docker container but want to access it on windows os browser as localhost.

I can access the webserver with boot2docker private ip address which is 192.168.59.103 but would like to access the webserver as localhost i.e 127.0.0.1.

Following is my Docker Container setup

Running Boot2docker on Oracle VM Exposed ports : "EXPOSE 80 443" in docker file

Command used to create Docker File :

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

回答1:

If you want to access localhost to ports 80 and 443 you need to perform two actions:

  1. First, when you create your container, you must specify the port mapping specifically. If you run docker run with -P option, the ports set in dockerfile's EXPOSE will be expose to random ports in the Boot2Docker environment. If you want to map it specifically you must run:

    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. And in order to map Boot2Docker port to your host environment, as Joe Niland link suggested, you must do a port forwarding using SSH tunneling:

    boot2docker ssh -L 80:localhost:80

    boot2docker ssh -L 443:localhost:443

You can change to port mappings if you wish.



回答2:

boot2docker actually created a vm with linux core in your Mac OS with VirtualBox, and 192.168.59.103 is the ip for that vm.

So you need to set a port forward for that vm

Notice that in Mac OS, port 80 need a high permission, so I use 8080 instead in this example.