bat*_*lei 6 docker docker-volume
关于带有选项“ https://docs.docker.com/engine/reference/commandline/volume_create/ ”的创建卷的信息非常有限。
我只是想创建一个有限大小的卷,我尝试过,
docker volume create --opt o=size=10m hello-volume
Run Code Online (Sandbox Code Playgroud)
,当使用“ docker run -v hello-volume:/ hello -it ubuntu / bin / bash”运行一个简单的hello world容器时,出现类似“ docker:daemon的错误响应:…没有此类设备”的错误。
因此,我假设创建卷时必须提供完整的选项,例如
“docker volume create --driver local --opt type=*** --opt device=*** --opt o=size=10m hello-volume”
Run Code Online (Sandbox Code Playgroud)
?如果是这样,这里的“类型”和“设备”是什么?我猜该设备实际上是任何目录的路径?我试过了
“docker volume create --driver local --opt type=volume --opt device=/ --opt o=size=10m hello-volume”.
Run Code Online (Sandbox Code Playgroud)
当尝试以“ 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
Run Code Online (Sandbox Code Playgroud)
最终可以正常工作,但是数据在内存中并不持久。那么,在创建卷时,有谁能指出“类型”和“设备”的选项是什么(如果我们不提供任何选项,默认值是什么)?
更新:
只是想更新一下,看来没有办法用ext4类型限制本地驱动程序中的磁盘大小(尽管声称可以在几个答案和其他文章中做到)。主要原因是“ ext4”文件系统中没有这样的“ size”参数。我创建了一个docker卷:
docker volume create --driver local --opt type=ext4 --opt device=/dev/xvdf --opt o=size=10m hello-volume
Run Code Online (Sandbox Code Playgroud)
然后检查它(docker volume检查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
Run Code Online (Sandbox Code Playgroud)
但是,当您在该容器的“ / myfile1”中写入/放置一个大文件(大于10m)时,没有引发警报/异常,则写入成功。我认为ext4类型的文件系统无法识别“ o = size = 10m”。
这实际上可以使用 dockerslocal卷驱动程序实现。此驱动程序接受类似于 linux挂载选项的选项。看看这个优秀的答案。
你很接近你的尝试。您需要指定一个--opt device=以及一个--opt type=选项。这实际上会将主机上的块设备作为卷安装到 docker 容器中。该type选项指定要使用的文件系统类型。该device选项要求您指定主机上的块设备之一 -/dev/sda2例如。您可以通过运行查看完整列表lsblk。
但是,映射现有驱动器是一个坏主意(除非它们未使用)。所以你需要创建一个新的块设备(使用lvm或等效),或者为了测试你可以使用易失性存储(tmpfs),正如你所尝试的那样。
| 归档时间: |
|
| 查看次数: |
2398 次 |
| 最近记录: |