我正在学习docker,我对数据卷实际存在的地方感到困惑。
我正在使用Windows的Docker Desktop。(Windows 10)
在文档中,他们说在对象上运行docker inspect会给你源代码:https://docs.docker.com/engine/tutorials/dockervolumes/#locating-a-volume
$ docker inspect web
"Mounts": [
{
"Name": "fac362...80535",
"Source": "/var/lib/docker/volumes/fac362...80535/_data",
"Destination": "/webapp",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
然而,我没有看到这一点,我得到了以下:
$ docker inspect blog_postgres-data
[
{
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/blog_postgres-data/_data",
"Name": "blog_postgres-data",
"Options": {},
"Scope": "local"
}
]
有人能帮帮我吗?我只想知道我的数据量在哪里是在主机上吗?如果是这样,我怎么能得到它的路径?
每个容器都有独立于主机文件系统的自己的文件系统。如果你使用-v标志运行容器,你可以挂载卷,这样主机和容器就可以看到相同的数据(就像docker run -v hostFolder:containerFolder)。
您打印的第一个输出描述了这样一个挂载卷(因此是挂载),其中/var/lib/docker/volumes/ fac362…80535/_data(主机)挂载到/webapp(容器)。
我假设您没有使用-v,因此该文件夹没有被挂载,只能在容器文件系统中访问,您可以在/var/lib/docker/volumes/blog_postgres-data/_data中找到。如果删除容器(docker -rm),这些数据将被删除,因此挂载文件夹可能是个好主意。
至于在哪里可以从窗口访问这些数据的问题。据我所知,windows的docker使用了windows 10中的bash子系统。我会尝试在windows10上运行bash,然后找到那个文件夹,或者找出如何从windows10上访问linux文件夹。在windows 10中查看有关linux子系统的常见问题解答。
更新:你也可以使用docker cp在主机和容器之间复制文件。
每个容器都有独立于主机文件系统的自己的文件系统。如果你使用-v标志运行容器,你可以挂载卷,这样主机和容器就可以看到相同的数据(就像docker run -v hostFolder:containerFolder)。
您打印的第一个输出描述了这样一个挂载卷(因此是挂载),其中/var/lib/docker/volumes/ fac362…80535/_data(主机)挂载到/webapp(容器)。
我假设您没有使用-v,因此该文件夹没有被挂载,只能在容器文件系统中访问,您可以在/var/lib/docker/volumes/blog_postgres-data/_data中找到。如果删除容器(docker -rm),这些数据将被删除,因此挂载文件夹可能是个好主意。
至于在哪里可以从窗口访问这些数据的问题。据我所知,windows的docker使用了windows 10中的bash子系统。我会尝试在windows10上运行bash,然后找到那个文件夹,或者找出如何从windows10上访问linux文件夹。在windows 10中查看有关linux子系统的常见问题解答。
更新:你也可以使用docker cp在主机和容器之间复制文件。