【问题标题】:Docker Named VolumesDocker 命名卷
【发布时间】:2018-03-02 14:02:43
【问题描述】:

在 docker compose v3 中混合使用和不使用本地主机路径的命名卷的正确方法是什么? 这样我就会收到 YML 错误:

volumes:
  /mnt/volume-part1:/volume
  conf:
  vhost:
  html:
  certs:

那我想参考容器内的volume...

【问题讨论】:

    标签: docker docker-compose docker-volume


    【解决方案1】:

    对于命名卷,您需要在撰写文件的专用卷部分下声明卷名。对于挂载,您无需在该部分中声明它: 考虑以下撰写文件:

    version: "3"
    
    services:
      db:
        image: db
        volumes:
          - data-volume:/var/lib/db
          - /mnt/volume-part1:/volume
    
    volumes:
      data-volume:
    

    如您所见,命名卷 data-volume 需要在分配给容器之前在卷部分中声明。 而目录挂载是直接挂载到容器上的。

    更新

    如果你不想在所有容器上复制机器路径,你可以使用一个聪明的技巧来指定命名卷的确切创建位置:

    version: "3"
    
    services:
      db:
        image: db
        volumes:
          - data-volume:/var/lib/db
          - volume-part1:/volume
    
    volumes:
      data-volume:
      volume-part1:
       driver_opts:
         type: none
         device: /mnt/volume-part1
         o: bind
    

    如您在上面看到的,我们创建了一个命名卷 volume-part1 并指定了该卷将在主机上备份的位置。

    【讨论】:

    • 所以我必须将 mnt 附加到特定容器或为每个需要它的容器复制它。是对的吗?我问它,因为我想避免以这种方式对主机路径进行硬编码......
    • 非常感谢,只是好奇:data-volume 在最后一卷部分没有 : 是否正常?
    • : 不见了。
    猜你喜欢
    • 2020-07-10
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 2020-03-13
    • 2019-03-19
    • 2016-10-08
    • 1970-01-01
    • 2020-07-10
    相关资源
    最近更新 更多