Boot2Docker: Connect to container over LAN

2019-03-16 19:23发布

I'm using Boot2Docker 1.3.0 on my Mac and I'm pretty happy so far using it. But now I'd like to connect to a http container (exposes port 8080) not from my local machine but from another machine in my local network? If I'm doing it locally I just use http://192.168.59.103:8080 so I'm using the ip address of the docker host. This can't work for other machines in my local network but using the ip address of my mac does not work either. I'm pretty sure there are some solutions for this problem but I can't find any. It can't be that hard right? What I want is to make a request to http://[IP-Address-of-mac]:8080 from another host in my local network. I think I have to set up some routing rules on my local machine right? May anybody tell me what to do? Thanks in advance.

Best regards

Sascha

2条回答
SAY GOODBYE
2楼-- · 2019-03-16 19:48

On your Mac, determine the IP address that it uses on your local LAN:

$ ifconfig | grep 192
    inet 192.168.1.21 netmask 0xffffff00 broadcast 192.168.1.255
    inet 192.168.59.3 netmask 0xffffff00 broadcast 192.168.59.255

Then port forward:

$ boot2docker ssh -vnNTL 192.168.1.21:8080:localhost:8080

Now, requests that come into your Mac on port 8080 will get forwarded to the boot2docker Linux VM on port 8080. The docker server will then forward from the exposed port (VM port 8080) to the port your container is using for httpd (probably 80).

Note that "localhost" above is from the point of view of the Linux VM, not the Mac, because that is the host you are ssh'ing into.

查看更多
趁早两清
3楼-- · 2019-03-16 20:00

You need to port forward from the OSX box to the virtual machine

VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8080,tcp,,8080,,8080";

should do the trick

or, you could use ssh based port forwarding:

boot2docker ssh -L 8000:localhost:8000

see https://github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md

查看更多
登录 后发表回答