There is is very limited information regarding create volume with options "https://docs.docker.com/engine/reference/commandline/volume_create/ ".
I just want to create a volume with limited size, I tried,
docker volume create --opt o=size=10m hello-volume
, when run a simple hello world container with “docker run -v hello-volume:/hello -it ubuntu /bin/bash”, I got the error as something like “docker: Error response from daemon: …no such device”…
So I assumed we must give the full options when creating the volume, such as
“docker volume create --driver local --opt type=*** --opt device=*** --opt o=size=10m hello-volume”
? If so, what are the “type” and “device” here? I guess the device actually is a path to any directory? I tried
“docker volume create --driver local --opt type=volume --opt device=/ --opt o=size=10m hello-volume”.
When tried to run the container as “docker run -v hello-volume:/hello -it ubuntu /bin/bash” I got the error as “docker: Error response from daemon: error while mounting volume ‘/var/lib/docker/volumes/hello-volume/_data’: error while mounting volume with options: type=‘volume’ device=’/’ o=‘size=10m’: no such device.”.
I tried
docker volume create --driver local --opt type=tmpfs --opt device=tmpfs --opt o=size=10m hello-volume
which finally works, but the data is in memory which is not persistent. So can any one point out what are the options for “type” and “device” when creating the volume (or what’s the default one if we don’t give any options)?
Update:
Just want to update that it seems there is no way to limit the disk size in local driver with ext4 type (although claimed doable in several answers and other posts). The major reason is there is no such "size" parameter in "ext4" file system.. I created a docker volume:
docker volume create --driver local --opt type=ext4 --opt device=/dev/xvdf --opt o=size=10m hello-volume
Then inspect it (docker volume inspect hello-volume), and mount it with a container, everything looks fine for now.
[
{
"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
But when you write/put a large file (larger than 10m) in the "/myfile1" in that container, no alert/exception is thrown, the write succeeded. What I think is that "o=size=10m" is not recognized by ext4 type file system.