我需要为 Docker创建一个持久卷。该卷必须命名extra-addons并位于/mnt/.
我运行这个命令:
sudo docker volume create /mnt/extra-addons
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
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
Run Code Online (Sandbox Code Playgroud)
请注意,当我简单地运行: 时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"
}
]
Run Code Online (Sandbox Code Playgroud)
我的意思是我宁愿看到这样的音量: /mnt/extra-addons
任何的想法?
Bil*_*adj 18
我找到了解决方案:
我必须安装local-persist插件。
我必须将要创建的卷安装到安装点,如下所示:
sudo docker volume create -d local-persist -o mountpoint=/mnt/ --name=extra-addons
Run Code Online (Sandbox Code Playgroud)
检查我是否得到了预期的结果:
sudo docker volume inspect extra-addons
Run Code Online (Sandbox Code Playgroud)
结果:
[
{
"CreatedAt": "0001-01-01T00:00:00Z",
"Driver": "local-persist",
"Labels": {},
"Mountpoint": "/mnt/",
"Name": "extra-addons",
"Options": {
"mountpoint": "/mnt/"
},
"Scope": "local"
}
]
Run Code Online (Sandbox Code Playgroud)
这就是我正在寻找的。
小智 11
如果您不想在 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
Run Code Online (Sandbox Code Playgroud)
现在可以像往常一样随意使用您的音量(所有数据都/mnt按您的需要输入)
我不认为使用local-persist驱动程序是要走的路。它已经有一段时间没有更新了。您可以使用 docker mount 将本地(主机)目录挂载到 docker 容器中。
运行以下命令会创建一个新容器,其中安装的目录映射到我的桌面。
mkdir extra-addons
docker run -it -v /Users/me/Desktop/extra-addons:/mnt/extra-addons busybox /bin/sh
ls
Run Code Online (Sandbox Code Playgroud)
您现在可以mnt在容器的根目录中看到一个文件夹。
bin dev etc home mnt proc root sys tmp usr var
在容器中创建一个新文件
touch /mnt/extra-addons/test.txt
在我的主机上创建一个 test.txt 文件。在指定的路径。现在这是一个双向读/写共享文件夹。多个容器可以挂载同一个文件夹。一旦您关闭容器,它就会持续存在。
| 归档时间: |
|
| 查看次数: |
54027 次 |
| 最近记录: |