Docker 访问主机上的端口 运行

Docker access port running on host

我正在使用 boot2docker 并且 运行 是一个 docker 容器。我希望 docker 容器能够与具有开放端口的主机通信。我试过打主机盒,但它通过 virtualbox,所以这里似乎需要两级桥接才能让端口通话。不确定该怎么做,或者即使它可能。

其实你是对的,有2个级别:

主机 <-> boot2docker 虚拟机 <-> docker 容器

因此,如果您在 运行 您的容器中打开一个端口,则可以从 boot2docker 虚拟机而不是主机访问该端口,除非您进行端口转发。

这里有两个解决方案:

  • 使用 boot2docker VM 的 ip 访问,而不是 localhost
    运行 boot2docker ip 你会看到一个ip地址,比如192.168.59.103,然后你就可以通过192.168.59.103:port

  • 访问你的服务了
  • 进行端口转发 打开你的 VirtualBox 应用程序,select 虚拟机即 boot2docker-vm,转到 Settings->Network->Advanced->Port Forwarding。然后你可以添加你自己的端口转发,例如,我想通过 localhost:10022 访问我的 ssh 端口,只需添加一个新列 host port 10022 和来宾端口 22。 您可以查看 this doc 了解更多信息。

如果你想从容器访问主机端口,这里有一个简单的方法,只需将你的主机 ip 暴露给 docker 容器的 host,比如 docker run --add-host vmhost:192.168.59.3 <docker_image> <command>,注意 [=22] =] 是默认的 virtualbox host only adapter IP。然后你就可以访问vmhost了。

此外,您可以管理自己的网桥来执行此操作,pipework 可能会对您有所帮助。