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