链接在不同主机上运行的Docker容器?

我开始使用Docker进行基于容器的架构,我怀疑这也许是一个无稽之谈。

链接在不同主机上运行的Docker容器是否有意义?

假设我们有两个容器:

  1. barDatabase
  2. fooService

如果两者都在同一个主机中,我们将barDatabase fooService链接到fooService ,这样就可以在主机名之间进行通信。

但是,如果他们在不同的机器上运行:

  1. barDatabase – > machine1.company.local
  2. fooService – > machine2.company.local

将它们连接起来还有必要吗? 我们不能使用原始主机名而不链接它们吗?

谢谢。

是和不是。 较新版本的Docker具有dockernetworking – 这需要一些额外的configuration,例如etcd来pipe理configuration。

这样做,你可以:

 docker network create sometnetname docker run -d --net somenetname --name barDatabase yourimage 

而在你的其他主机上:

 docker run -d -p 8080:8080 --net somenetname --name fooService service_image 

然后,您将能够从fooService'ping'barDatabase,就好像它是一个主机名。 而fooService将连接到外部networking,并充当网关。

这适用于我的1.9.1泊坞窗,而不是我的1.8.2 – 在centos上。 (所以我会认为这是一个1.9以上的function,但我找不到直接的来源)。

更多细节: https : //docs.docker.com/engine/userguide/networking/get-started-overlay/

需要更多的faff设置,因为你必须configurationetcd(或另一个键值存储)

我一直在使用它来在一个私有networking上放置一个多节点弹性search实例,我假设它与您的用例类似。 (3个主机上的3个节点,logstash正在进入,kibana充当网关,以及一个nginxpipe理代理,进行一些安全/重写)

在这种情况下,您将不得不公开您希望从machine1中的数据库容器访问的端口,然后在machine2中,您只需按照预期将其指向显示端口上的machine1。 没有必要(和AFAIK没有办法)直接连接来自不同机器的容器。