Создать том докера с ограниченным размером - PullRequest
0 голосов
/ 30 августа 2018

Существует очень ограниченная информация относительно создания тома с опциями "https://docs.docker.com/engine/reference/commandline/volume_create/".

Я просто хочу создать том с ограниченным размером, я пробовал,

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

, когда я запускаю простой контейнер hello world с «docker run -v hello-volume: / hello -it ubuntu / bin / bash», я получаю сообщение об ошибке вроде «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 / volume / 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 такого параметра size нет. Я создал том докера:

docker volume create --driver local --opt type=ext4 --opt device=/dev/xvdf --opt o=size=10m hello-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

Но когда вы записываете / помещаете большой файл (больше 10 м) в «/ myfile1» в этом контейнере, не генерируется предупреждение / исключение, запись завершается успешно. Я думаю, что «o = size = 10m» не распознается файловой системой типа ext4.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Это на самом деле возможно при использовании драйвера томов local. Этот драйвер принимает параметры, аналогичные параметрам linux mount . Проверьте этот превосходный ответ .

Вы были близки с вашей попыткой. Вам необходимо указать --opt device=, а также --opt type=. По сути, это будет монтировать блочное устройство на вашем хосте в ваш док-контейнер как том. Параметр type указывает тип используемой файловой системы. Опция device требует, чтобы вы указали одно из блочных устройств на вашем хосте - /dev/sda2, например. Вы можете увидеть полный список, запустив lsblk.

Однако было бы плохой идеей отобразить существующие диски (если они не используются). Таким образом, вам нужно будет создать новое блочное устройство (используя lvm или эквивалентное), или для тестирования вы можете использовать энергозависимое хранилище (tmpfs), как вы уже пробовали.

0 голосов
/ 30 августа 2018

Тома Docker имеют прикрепленные к ним «драйверы». Драйвер по умолчанию называется "local" , и все, что он делает, это создает каталог в /var/lib/docker и монтирует его в контейнер. Нет возможности указать (или ограничить) размер тома.

...