创建有限大小的docker卷

问题描述 投票:4回答:2

有关选项“https://docs.docker.com/engine/reference/commandline/volume_create/”的创建量的信息非常有限。

我只是想创建一个有限大小的卷,我试过,

docker volume create --opt o=size=10m hello-volume

,当运行一个带有“docker run -v hello-volume:/ hello -it ubuntu / bin / bash”的简单hello world容器时,我得到的错误就像“docker:来自守护进程的错误响应:......没有这样的设备”......

所以我假设我们必须在创建卷时给出完整的选项,例如

“docker volume create --driver local --opt type=*** --opt device=*** --opt o=size=10m hello-volume”

?如果是这样,这里的“类型”和“设备”是什么?我猜设备实际上是任何目录的路径?我试过了

“docker volume create --driver local --opt type=volume --opt device=/ --opt o=size=10m hello-volume”.

当试图以“docker run -v hello-volume:/ hello -it ubuntu / bin / bash”运行容器时,我收到错误为“docker:来自守护程序的错误响应:安装卷时出错”/ var / lib / docker / volumes / hello-volume / _data':使用选项装入卷时出错:type ='volume'device ='/'o ='size = 10m':没有这样的设备。“

我试过了

docker volume create --driver local --opt type=tmpfs --opt device=tmpfs --opt o=size=10m hello-volume

最终工作,但数据在内存中是不持久的。因此,任何人都可以指出在创建卷时“类型”和“设备”的选项是什么(如果我们不给出任何选项,那么什么是默认值)?

更新:

只是想更新一下,似乎没有办法限制ext4类型的本地驱动程序中的磁盘大小(虽然在几个答案和其他帖子中声称可行)。主要原因是“ext4”文件系统中没有这样的“大小”参数..我创建了一个docker卷:

docker volume create --driver local --opt type=ext4 --opt device=/dev/xvdf --opt o=size=10m hello-volume

然后检查它(docker volume inspect hello-volume),并用容器装上它,现在一切看起来都很好。

[
    {
        "CreatedAt": "2018-09-01T04:23:57Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/hello-volume/_data",
        "Name": "hello-volume",
        "Options": {
            "device": "/dev/xvdf",
            "o": "size=10m",
            "type": "ext4"
        },
        "Scope": "local"
    }
]

docker run -v hello-volume:/myfile1 -exec -it ubuntu /bin/bash

但是当您在该容器中的“/ myfile1”中写入/放置一个大文件(大于10米)时,不会抛出警报/异常,写入成功。我认为ext4类型的文件系统无法识别“o = size = 10m”。

docker docker-volume
2个回答
3
投票

这实际上可以使用dockers local音量驱动程序。此驱动程序接受类似于linux mount选项的选项。看看这个优秀的answer

你接近你的尝试。您需要指定--opt device=以及--opt type=选项。这实际上会将主机上的块设备作为卷安装到docker容器中。 type选项指定要使用的文件系统类型。 device选项要求您在主机上指定一个块设备 - 例如/dev/sda2。您可以通过运行lsblk查看完整列表。

但是,映射现有驱动器(除非它们未使用)将是一个坏主意。因此,您需要创建一个新的块设备(使用lvm或等效设备),或者为了测试,您可以使用易失性存储(tmpfs),就像您尝试过的那样。


1
投票

Docker卷附加了“驱动程序”。 The default driver is one called "local"和它所做的只是在/var/lib/docker中创建一个目录并将其安装到容器中。没有选项来指定(或限制)音量的大小。

© www.soinside.com 2019 - 2024. All rights reserved.