如何使用与主机共享的数据创build命名的Docker数据卷

如何使用Version 2.1 Docker Compose语法创build共享的命名卷。 我想挂载一个主机文件夹作为一个共享卷,并在closures之间将数据保存在主机上。

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 

好了,经过多次searchgit问题列表,我们有:

Github问题

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

 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 

编辑:
设备path必须是绝对path – >与Docker开发者有关的这一切有很多

“命名卷”和“在主机上指定安装点”是相互排斥的选项。 这可能是有可能的 (因为有些人已经在Github的问题上尝试了一系列的命令),但这并不是一个常见的用例,所以不应该被需要甚至被普遍推荐

命名卷的要点是能够通过为数据卷提供一个名称来保存和重用(装载到另一个容器中)数据,以便知道其中的内容。 这样,当你启动另一个容器时,你可以做一些像-v my-mysql-data:/var/lib/mysql而不必在主机上指定一个挂载点。 如果您在主机上指定卷的挂载点,则不需要命名卷,因为您已经有一个名称( path ),甚至可以检查其内容。 “名称”是“主机安装点”。