我正在使用boot2docker并且正在运行一个docker容器。我希望这个docker容器能够与拥有开放端口的主机通话。我试过点击主机盒,但它通过虚拟机盒,因此似乎需要有两个级别的桥接才能让端口通话。不知道该怎么做,或者即使它可能。
答案 0 :(得分:2)
其实你是对的,有两个级别:
主机< - > boot2docker VM< - >泊坞容器
因此,如果在运行容器时打开端口,则可以从boot2docker VM访问该端口,但不能访问主机,除非您进行端口转发。
以下是两个解决方案:
使用boot2docker VM的ip进行访问,但不是localhost
运行boot2docker ip
,您会看到192.168.59.103
等IP地址,然后您可以通过192.168.59.103:port
进行端口转发
打开VirtualBox应用程序,选择虚拟机boot2docker-vm
,转到Settings
- > Network
- > Advanced
- > Port Forwarding
。然后你可以添加自己的转发端口,例如,我想通过localhost:10022
访问我的ssh端口,只需添加一个新列,其中主机端口 10022和客人港口 22。
您可以查看this doc以获取更多信息。
如果你想从容器访问主机端口,这是一个简单的方法,只需将你的主机ip暴露给docker容器的host
,如docker run --add-host vmhost:192.168.59.3 <docker_image> <command>
,请注意192.168.59.3
是默认的虚拟框仅托管适配器IP。然后,您可以根据需要访问vmhost
。
此外,您可以管理自己的网桥,pipework可以为您提供帮助。