2016-01-22 125 views
0

我开始使用Docker进行基于容器的archictectures,我怀疑这可能是无稽之谈。链接在不同主机上运行的Docker容器?

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

假设我们有两个容器:

  1. barDatabase
  2. fooService

如果两者在同一台主机,我们将链接barDatabasefooService捐赠,这样一来,一个主机名他们之间的沟通。

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

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

会还需要链接呢?我们不能使用原始主机名而无需链接它们吗?

谢谢。

回答

1

是和否。较新版本的Docker具有docker网络 - 这需要一些额外的配置,例如 - etcd来管理配置。

这样做,则可以:

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

还有你的另一台主机上:

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

然后,您就可以“平” barDatabase,如果它是一个主机名,来自fooService。而fooService将连接到外部网络,并充当网关。

这适用于我的1.9.1码头,而不是我的1.8.2 - 在centos上。 (所以我会认为它是1.9+的功能,但我找不到直接来源)。

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

需要多一点的faff成立,但因为你必须配置ETCD(或其他键值存储)

我一直在使用这把一个私有网络上的多节点elasticsearch实例,我假设它与您的用例类似。 (3台主机上的3个节点,logstash进入,kibana充当网关,以及一个nginx管理代理,进行一些安全/重写)

1

在这种情况下,您必须公开要从machine1中的数据库容器访问的端口,然后在机器2中,您可以像预期的那样指向显示端口上的machine1。没有必要(和AFAIK无法)直接连接来自不同机器的容器。

相关问题