【发布时间】:2021-12-12 18:38:22
【问题描述】:
我想在我的 docker compose 文件中使用一个命名卷,它绑定到主机中的用户定义路径。似乎应该是可能的,因为我在网上看到了多个示例,其中一个是 How can I mount an absolute host path as a named volume in docker-compose?。
所以,我也想做同样的事情。请记住,这只是一个示例,我有一个用例,我想将命名卷用于 DRYness。
注意:我正在使用带有 WSL2 的 Docker for Windows
version: '3'
services:
example:
image: caddy
restart: unless-stopped
volumes:
- caddy_data:/data
- ./Caddyfile:/etc/caddy/Caddyfile
volumes:
caddy_data:
name: caddy_data
driver_opts:
o: bind
device: D:\Some\path_in\my\host
type: none
# volumes:
# caddy_data:
# external: true
# name: caddyvol
这不起作用,每次我做docker compose up -d 我都会收到错误:
[+] Running 1/2
- Volume "caddy_data" Created 0.0s
- Container project-example-1 Creating 0.9s
Error response from daemon: failed to mount local volume: mount D:\Some\path_in\my\host:/var/lib/docker/volumes/caddy_data/_data, flags: 0x1000: no such file or director
但如果我首先使用创建卷
docker volume create --opt o=bind --opt device=D:\Some\path_in\my\host --opt type=none caddyvol
然后在我的 docker compose 文件中使用上面的内容(参见上面文件的注释部分),它可以完美运行。
我什至尝试查看创建的卷之间的差异,但没有发现
docker volume inspect caddy_data
[
{
"CreatedAt": "2021-12-12T18:19:20Z",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "ngrok-compose",
"com.docker.compose.version": "2.2.1",
"com.docker.compose.volume": "caddy_data"
},
"Mountpoint": "/var/lib/docker/volumes/caddy_data/_data",
"Name": "caddy_data",
"Options": {
"device": "D:\\Some\\path_in\\my\\host",
"o": "bind",
"type": "none"
},
"Scope": "local"
}
]
docker volume inspect caddyvol
[
{
"CreatedAt": "2021-12-12T18:13:17Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/caddyvol/_data",
"Name": "caddyvol",
"Options": {
"device": "D:\\Some\\path_in\\my\\host",
"o": "bind",
"type": "none"
},
"Scope": "local"
}
]
你知道这里出了什么问题吗?
【问题讨论】:
标签: docker docker-compose