Docker卷挂载不存在。

12

我正在运行 Docker 1.11 在 OS X 上,我试图找出我的本地卷存储在哪里。我通过运行 docker volume create --name mysql 创建了一个 Docker 卷。然后我运行了 docker volume inspect mysql 命令,并输出如下结果:

[
    {
        "Name": "mysql",
        "Driver": "local",
        "Mountpoint": "/mnt/sda1/var/lib/docker/volumes/mysql/_data",
        "Labels": {}
    }
]
问题在于我的机器上实际上不存在“/mnt/sda1/var/lib/docker/volumes/mysql/_data”路径。我认为问题可能是它只有在被容器使用时才会被创建,因此我通过运行“docker run --name mysql -v mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql -P -d mysql:5.7”启动了一个容器,然后在MySQL中创建了一个数据库,但挂载点仍然不存在。我甚至运行了“docker inspect mysql”来确保它正在使用正确的卷,并得到以下结果:
...
"Mounts": [
    {
        "Name": "mysql",
        "Source": "/mnt/sda1/var/lib/docker/volumes/mysql/_data",
        "Destination": "/var/lib/mysql",
        "Driver": "local",
        "Mode": "z",
        "RW": true,
        "Propagation": "rprivate"
    }
],
...

目前,我完全不知道数据被写入了哪里。我错过了什么吗?


4
在OS X和Windows操作系统上,Docker运行于虚拟机(Boot2Docker)内部。文件夹位于该虚拟机内部。您可以使用docker-machine ssh default登录虚拟机并查看其中的文件夹。 - Xiongbing Jin
该死,我知道我错过了一些愚蠢的东西。你想发布为答案,这样我就可以标记它吗? - timcase
2个回答

16

由于Docker基于Linux,因此无法直接在Windows/OS X上运行。相反,它在运行Linux操作系统的VirtualBox虚拟机(Docker Machine)内运行。这就是为什么当你安装Docker Toolbox时会看到VirtualBox已安装的原因。

要查看此虚拟机内的文件和文件夹,请使用

docker-machine ssh default

default 是默认 Docker Machine 的名称。


3
现在已经不是这样了。现在有适用于 Mac 和 Windows 的 Docker 版本。 - Maksim
1
截至2016年12月,Docker for Windows仅适用于64位Windows 10 Pro、Enterprise和Education(1511年11月更新,Build 10586或更高版本)。答案仍然是正确的,"不再正确"是夸张的。 - Erdinç Çorbacı
哦天啊 - 是的 - 我错过了一个重要的信息,即另外一台主机正在运行 Windows 7。现在一切都更有意义了。我该如何让它按照我的意愿执行...我不知道。 - paulecoyote

2

Docker 19.3.8

我在Mac电脑上创建了一个文件夹,并改变了它的挂载点,然后Docker正常运行。

$ mkdir volume_database
$ docker container run -it \
--volume=/volume_database:/volume_database debian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接