Docker:在特定目录中创建持久卷

Docker:在特定目录中创建持久卷

我需要创建一个持续量对于 Docker。该卷必须命名extra-addons并位于/mnt/.

我运行这个命令:

sudo docker volume create /mnt/extra-addons

我收到此错误消息:

Error response from daemon: create /mnt/extra-addons: "/mnt/extra-addons" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path

请注意,当我简单地运行:时sudo docker volume create extra-addons,我不会遇到此问题,但是当我使用检查有问题的卷时sudo docker inspect extra-addons,我发现它位于我不想要的位置:

[
    {
        "CreatedAt": "2018-04-21T14:40:25+03:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/extra-addons/_data",
        "Name": "extra-addons",
        "Options": {},
        "Scope": "local"
    }
]

我的意思是我宁愿看到这样的卷:/mnt/extra-addons

任何想法?

答案1

我找到了解决方案:

我必须安装本地持续插入。

我必须将要创建的卷安装到安装点,如下所示:

 sudo docker volume create -d local-persist -o mountpoint=/mnt/ --name=extra-addons

检查我是否得到了我所期望的:

sudo docker volume inspect extra-addons

结果:

[
    {
        "CreatedAt": "0001-01-01T00:00:00Z",
        "Driver": "local-persist",
        "Labels": {},
        "Mountpoint": "/mnt/",
        "Name": "extra-addons",
        "Options": {
            "mountpoint": "/mnt/"
        },
        "Scope": "local"
    }
]

这就是我正在寻找的。

答案2

如果您不想在 docker 上安装任何插件,我建议为您的卷创建一个符号链接:

$ docker volume create <myVolume>
$ docker volume inspect <myVolume> 
[
    {
        "CreatedAt": "0001-01-01T00:00:00Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/<myVolume>/_data",
        "Name": "<myVolume>",
        "Options": {},
        "Scope": "local"
    }
]
$ mkdir /mnt/<myVolume>
# if you already have data in your volume, you should copy it to `/mnt/<myVolume>` now
$ sudo rm -rf /var/lib/docker/volumes/<myVolume>/_data
$ sudo ln -s /mnt/<myVolume> /var/lib/docker/volumes/<myVolume>/_data

现在,您可以像往常一样随意使用您的卷(所有数据都/mnt按照您的意愿输入)

答案3

我不认为使用local-persist驱动程序是正确的方法。已经有一段时间没有更新了。您可以使用 docker mount 将本地(主机)目录挂载到 docker 容器中。

运行以下命令会创建一个新容器,其中的安装目录映射到我的桌面。

mkdir extra-addons
docker run -it -v /Users/me/Desktop/extra-addons:/mnt/extra-addons busybox /bin/sh
ls

mnt您现在可以在容器的根目录中看到一个文件夹。

bin dev etc home mnt proc root sys tmp usr var

在容器中创建新文件

touch /mnt/extra-addons/test.txt

在我的主机上创建一个 test.txt 文件。在指定路径。现在这是一个双向读/写共享文件夹。多个容器可以挂载同一个文件夹。一旦您关闭容器,它就会持续存在。

在此输入图像描述

相关内容