【问题标题】:How do I create a Named Docker Data Volumes with data shared with host如何使用与主机共享的数据创建命名 Docker 数据卷
【发布时间】:2017-01-29 11:09:20
【问题描述】:

如何使用 2.1 版 Docker Compose 语法创建共享命名卷。我想将主机文件夹挂载为共享卷,并在关机之间将数据保存在主机上。

web:
< ----- remainder of service defn omitted for clarity ----->
  # Load the external volume 'pgdata' into the folder /var.. on the host
  volumes:
    - pg-data:/var/lib/postgresql/data


# Top level volumes key allows sharing of volume across multiple services
# Volumes defined as name: <path on host>
volumes:
  # Volume named pgdata is located here on the host
  pg-data: #/var/lib/postgresql/data/
  # App data volume
  app-data: #./scribl/
  # Static files volume
  static-data: #./static/

更新: 我正在寻找的关键是能够在主机上指定共享卷的位置,即与旧方法相同但使用命名容器

volumes:
  - location/on/host:location/on/container

【问题讨论】:

    标签: docker docker-compose docker-volume


    【解决方案1】:

    好的,经过大量搜索 git 问题列表,我们有:

    Github Issue

    实现如下所示,其中 volumes 是顶级命令:

    volumes:
      # Volume named pgdata is located here on the host
      pg-data: #/var/lib/postgresql/data/
        driver: local
        driver_opts:
          device: /var/lib/postgres/ # this is the mount path on the host
          o: bind
    

    编辑:
    设备路径必须是绝对路径 -> 与 docker 开发人员有很多关于此的来回讨论

    【讨论】:

      【解决方案2】:

      “命名卷”和“指定主机上的挂载点”是互斥的选项。这样做可能是可能(因为有些人在您链接的 Github 问题中尝试了一系列命令)但它确实不是一个常见的用例,所以它不应该是需要的 甚至一般推荐

      命名卷的意义在于能够通过为数据卷命名来持久化和重用(挂载到另一个容器中)数据,以便您了解其中的内容。这样,当您启动另一个容器时,您可以执行-v my-mysql-data:/var/lib/mysql 之类的操作,而无需在主机上指定安装点。如果您在主机上指定卷的挂载点,则不需要命名卷,因为您已经有了名称(路径),甚至可以检查内容。 “名称”是“主机挂载点”。

      【讨论】:

      • 我同意你的说法,但命名语法使映射到网络驱动器的共享卷的定义更清晰
      猜你喜欢
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      相关资源
      最近更新 更多