docker服务如何知道同一服务的所有其他容器?

时间:2017-03-01 18:19:00

标签: docker docker-swarm

我正在使用文件同步Docker微服务。基本上我将拥有一个file-sync服务,该服务对于swarm是全局的(每个节点上一个)。服务中的每个容器都需要与不同节点上的所有其他容器对等。文件将分布在节点上,而不是完整的副本。某些文件仅驻留在某些节点上。我希望能够有选择地将文件的子集从一个节点复制到另一个节点。

如何获取所有其他容器的端点列表,以便微服务可以与它们对等?这需要以编程方式进行。

在相关的说明中,我想知道文件同步微服务是否是我正在处理的解决方案的最佳途径。

基本上我有一些用户上传的视频。我希望能够将它们编码为不同的格式。我计划让视频编码节点具有文​​件同步服务来拉取文件,对视频进行编码,然后使用文件同步将编码文件推送回同一服务器。我知道我可以使用某种对象存储,但是我无法使用裸机专用服务器,如果我不需要,我不会处理OpenStack。

1 个答案:

答案 0 :(得分:0)

感谢@ johnharris85提出上述建议。对于其他感兴趣的人,我创建了一个可以在node中使用的代码段。

https://gist.github.com/brennancheung/62d2abe16569e600d2be5e9495c85331

const dns = require('dns')

function lookup (serviceName) {
  const tasks = `tasks.${serviceName}`
  return new Promise((resolve, reject) => {
    dns.lookup(tasks, { all: true }, (err, addresses, family) => {
      if (err) {
        return reject(err)
      }
      const filtered = addresses.filter(address => address.family === 4)
      const ips = filtered.map(x => x.address)
      resolve(ips)
    })
  })
}

async function main () {
  const result = await lookup('hello')
  console.log(result)
}

main()