【问题标题】:Docker volume mount doesn't existDocker 卷挂载不存在
【发布时间】:2016-08-18 05:22:14
【问题描述】:

我在 OS X 上运行 Docker 1.11,并试图找出本地卷的写入位置。我通过运行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"
    }
],
...

此时,我完全不知道数据写入的位置。我错过了什么?

【问题讨论】:

  • 在 OS X 和 Windows 上,Docker 在虚拟机 (Boot2Docker) 中运行。该文件夹位于该虚拟机内。您可以使用docker-machine ssh default 登录,然后查看。
  • 该死,我知道我错过了一些愚蠢的东西。您要发布为答案以便我标记它吗?

标签: docker docker-volume


【解决方案1】:

由于 Docker 基于 Linux,它不能直接在 Windows/OS X 上运行。而是在运行 Linux 操作系统的 VirtualBox 虚拟机(Docker Machine)中运行。这就是为什么在安装 Docker Toolbox 时会看到 VirtualBox 已安装。

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

docker-machine ssh default

default 是默认 Docker 机器的名称。

【讨论】:

  • 这不再是真的了。现在 Docker for Mac 和 Docker for Windows 已经存在了。
  • Docker for Windows 仅适用于 64 位 Windows 10 专业版、企业版和教育版(11 月 1511 更新,内部版本 10586 或更高版本)截至 2016 年 12 月,答案仍然正确......“不再正确”被夸大了
  • 哦,我的话 - 是的 - 我错过了在 Windows 7 上运行该节目的另一台主机的关键信息。现在这一切都变得更有意义了。我将如何让它按照我想要的方式行事......我不知道
【解决方案2】:

Docker 19.3.8

我已经更改了我在 Mac 中创建的文件夹的挂载点。

之后就成功了。

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

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 2021-10-26
    • 1970-01-01
    • 2020-06-05
    • 2020-01-20
    • 2016-02-29
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多