Docker 命名卷
Docker Named Volumes
在 docker compose v3 中混合使用和不使用本地主机路径的命名卷的正确方法是什么?
这样我就得到了 YML 错误:
volumes:
/mnt/volume-part1:/volume
conf:
vhost:
html:
certs:
那我想参考容器内的体积...
对于命名卷,您需要在撰写文件的专用卷部分下声明卷名。对于挂载,您无需在该部分中声明它:
考虑以下撰写文件:
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
并指定了该卷在主机上的备份位置。
在 docker compose v3 中混合使用和不使用本地主机路径的命名卷的正确方法是什么? 这样我就得到了 YML 错误:
volumes:
/mnt/volume-part1:/volume
conf:
vhost:
html:
certs:
那我想参考容器内的体积...
对于命名卷,您需要在撰写文件的专用卷部分下声明卷名。对于挂载,您无需在该部分中声明它: 考虑以下撰写文件:
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
并指定了该卷在主机上的备份位置。