如何使用与主机共享的数据创建命名 Docker 数据卷
How do I create a Named Docker Data Volumes with data shared with host
如何使用 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
好吧,在 git 问题列表中进行了大量搜索后,我们有:
实现看起来像这样,其中 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 开发人员就此
进行了大量的交流
"Named volumes" 和 "specify the mount point on the host" 是互斥的选项。可能 可能 这样做(因为有些人在您链接的 Github 问题中尝试了一系列命令)但它确实不是一个常见的用例所以它应该不需要,甚至通常推荐。
命名卷的意义在于能够通过为数据卷命名来持久化和重用(装载到另一个容器中)数据,以便您知道其中的内容。这样,当您启动另一个容器时,您可以执行 -v my-mysql-data:/var/lib/mysql
之类的操作,而无需在主机上指定挂载点。如果您在主机上为卷指定一个安装点,则不需要命名卷,因为您已经有了名称(路径),您甚至可以检查内容。 "name" 是 "host mount point".
如何使用 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
好吧,在 git 问题列表中进行了大量搜索后,我们有:
实现看起来像这样,其中 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 开发人员就此
"Named volumes" 和 "specify the mount point on the host" 是互斥的选项。可能 可能 这样做(因为有些人在您链接的 Github 问题中尝试了一系列命令)但它确实不是一个常见的用例所以它应该不需要,甚至通常推荐。
命名卷的意义在于能够通过为数据卷命名来持久化和重用(装载到另一个容器中)数据,以便您知道其中的内容。这样,当您启动另一个容器时,您可以执行 -v my-mysql-data:/var/lib/mysql
之类的操作,而无需在主机上指定挂载点。如果您在主机上为卷指定一个安装点,则不需要命名卷,因为您已经有了名称(路径),您甚至可以检查内容。 "name" 是 "host mount point".