【问题标题】:Share volumes between docker stacks?在 docker 堆栈之间共享卷?
【发布时间】:2018-05-22 20:51:05
【问题描述】:
我有两个不同的 docker 堆栈,一个用于 HBase,一个用于 Spark。我需要将 HBase jar 放入 spark 路径。我可以做到这一点而不必修改火花容器的一种方法是使用卷。在我的 HBase docker-compose.yml 中,我定义了一个指向 HBase 主目录的卷(它恰好是 /opt/hbase-1.2.6)。是否可以与火花堆栈共享该卷?
现在,由于服务名称不同(2 个不同的 docker-compose 文件),卷被预先添加(hbase_hbasehome 和 spark_hbasehome)导致共享失败。
【问题讨论】:
标签:
apache-spark
docker
docker-compose
docker-swarm
【解决方案1】:
您可以使用external 卷。见here官方文档:
如果设置为 true,则指定此卷是在外部创建的
撰写。 docker-compose up 不会尝试创建它,而是引发
不存在则报错。
external 不能与其他卷配置结合使用
键(驱动程序,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