我可以使用相对路径创建docker卷:
version: '3'
services:
db:
image: postgres
environment:
POSTGRES_PASSWORD: ${DB_PASS}
volumes:
- ./dbdata:/var/lib/postgresql/data
ports:
- '5432:5432'
然后,dbdata
将在我的WSL 2
上可用,并且我将能够使用sudo su输入它并检查其内容。
但是,当我运行docker volume ls
时,我只看到下面的json,它根本看起来不像我的dbdata卷:
[
{
"CreatedAt": "2020-11-03T09:19:37Z",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/5d668164c5bcdf4cc01e4c8fbc20cc1155f757d4ba06dc5118fa2d0a0b5efb9b/_data",
"Name": "5d668164c5bcdf4cc01e4c8fbc20cc1155f757d4ba06dc5118fa2d0a0b5efb9b",
"Options": null,
"Scope": "local"
}
]
但是here我找到了这句话。
创建卷时,它存储在Docker主机上的目录中
因此,我的docker卷完全不应该位于WSL 2文件系统上,它们应该位于Docker host instead上。那为什么我在WSL中看到我的卷?
答案 0 :(得分:1)
因为,您引用的报价适用于命名卷。也就是说,通过docker volume create
命令创建的卷或在docker {commit.yml根volumes
部分中定义的卷,但不在特定服务的volumes部分中。
更具体地说,该语法创建了bind mount而不是命名卷。