链接在不同主机上运行的Docker容器?
我开始使用Docker进行基于容器的架构,我怀疑这也许是一个无稽之谈。
链接在不同主机上运行的Docker容器是否有意义?
假设我们有两个容器:
barDatabase
-
fooService
如果两者都在同一个主机中,我们将barDatabase
fooService
链接到fooService
,这样就可以在主机名之间进行通信。
但是,如果他们在不同的机器上运行:
-
barDatabase
– >machine1.company.local
-
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没有办法)直接连接来自不同机器的容器。