【问题标题】: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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 2014-09-10
      • 2021-10-10
      • 1970-01-01
      相关资源
      最近更新 更多