在docker堆栈之间共享卷?

时间:2018-05-22 20:51:06

标签: apache-spark docker docker-compose docker-swarm

我有两个不同的docker堆栈,一个用于HBase,另一个用于Spark。我需要让HBase罐子进入火花路径。我可以这样做的一种方法是使用音量而不必修改火花容器。在HBase的docker-compose.yml中,我定义了一个指向HBase home的卷(恰好是/opt/hbase-1.2.6)。是否可以与火花堆共享该音量?

现在,由于服务名称不同(2个不同的docker-compose文件),因此会预先添加卷(hbase_hbasehome和spark_hbasehome),导致共享失败。

1 个答案:

答案 0 :(得分:3)

您可以使用external卷。请参阅here官方文档:

  

如果设置为true,则指定已在外部创建此卷   撰写。 docker-compose up不会尝试创建它,并提升   如果它不存在则会出错。

     

external不能与其他卷配置一起使用   键(driver,driver_opts)。

     

在下面的示例中,而不是尝试创建一个名为的卷   [projectname] _data,Compose查找简单调用的现有卷   数据并将其挂载到db服务的容器中。

举个例子:

version: '2'

services:
  db:
    image: postgres
    volumes:
      - data:/var/lib/postgresql/data

volumes:
  data:
    external: true
  

您还可以在Compose文件中与用于引用它的名称分别指定卷的名称:

volumes:
  data:
    external:
      name: actual-name-of-volume