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


16

我需要为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

任何想法?

Answers:


13

我找到了解决方案:

我必须安装local-persist插件。

我必须将卷挂载到创建点,如下所示:

 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"
    }
]

那就是我想要的。


6

如果您不想将任何插件安装到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


不要认为删除Docker管理的卷不是个好主意。改用mount将主机目录装载到docker中。
Lex

4

我不认为使用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文件。在指定的路径。现在这是一种双向读/写共享文件夹。多个容器可以安装同一文件夹。一旦您关闭容器,它就会持续存在。

在此处输入图片说明


谢谢,这节省了我一步。我试图添加一个卷。只需挂载目录
Chaim Eliyah '19
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.