【问题标题】:Boot2Docker private network setupBoot2Docker 专用网络设置
【发布时间】:2014-11-04 04:27:34
【问题描述】:

如何为 boot2docker docker 容器建立私有网络?

例如,如果我有一个 webapp,我可以在 Vagrantfile 中执行以下操作

  myapp1.vm.network "private_network", ip: "1.2.3.4"
  myapp2.vm.network "private_network", ip: "1.2.3.5"
  myapp3.vm.network "private_network", ip: "1.2.3.6"

然后我可以使用我的浏览器访问我的网络应用程序

http://1.2.3.4
http://1.2.3.5
http://1.2.3.6

如何在 docker 中轻松实现相同的结果?

我也看了How to expose docker container's ip and port to outside docker host without port mapping?

但是在我的boot2docker1.3中,却说接口eth0:1不存在

我看了https://docs.docker.com/articles/networking

本教程不适用于 mac 中的 boot2docker。

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 你想用这个网络做什么?您希望它只对一个容器私有吗?您希望多个容器能够通过它进行通信吗?
  • 谢谢,多个容器可以相互通信,我可以将它们链接在一起 --link,我希望每个容器都有自己的 ip,所以我可以从外部访问它们(作为 Web 服务)
  • 默认情况下,它们都会获得一个唯一的 ip,但它会由 Docker 随机分配,流量不会从机外路由到它。您可以使用github.com/zettio/weave 通过“附加”和“公开”功能解决这些问题。 (注:我为 Zettio 工作)
  • 但是 docker 容器 ip 无法从我的主机(mac 浏览器)访问,我可以做一些端口映射,将其映射到主机,但这不是我想要的,我想要每个容器(如webapp) 拥有一个我可以通过浏览器直接访问的 ip,而不是使用映射到 boot2docker 主机 ip
  • 哦,你是在 Mac 上使用 Boot2Docker 吗?这让事情变得更加复杂,因为有两个主机 - Mac 和 VirtualBox VM。

标签: vagrant docker vagrantfile boot2docker


【解决方案1】:

我相信从this question 链接的说明here 可以满足您的需求。关键是这一行:

sudo route -n add 172.17.0.0/16 172.16.0.11

它告诉您的 Mac 如何路由到 Docker 容器所在的 VirtualBox VM 内的专用网络。 (显然具体地址可以根据你的具体情况而改变)

这仍然不能让您将特定 IP 地址分配给特定容器;正如我所说,像weave 这样的附加组件可以做到这一点。 (注:我从事编织工作)

您可能还喜欢this article,它为初学者提供了 Boot2Docker 如何运行的概述,并说明了您如何在 VirtualBox 虚拟机中拥有 IP 地址,以及整个盒子的 IP 地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    相关资源
    最近更新 更多