Как проверить размер базового устройства контейнера докеров
Я знаю, что Docker использует пул хранения для выделения памяти каждому контейнеру. При использовании хранилища devicemapper по умолчанию размер пула хранения составляет 100 ГБ, а ограничение по умолчанию для каждого контейнера - 10 ГБ. Эти данные показаны вBase Device Size
а также Data Space Total
поле в docker info
.
Однако в моем сценарии docker info
не отображать эти поля данных, вероятно, потому что мой драйвер хранилища overlay2
Как я могу извлечь эту информацию, есть ли другие способы?
Выход docker info
Containers: 9
Running: 4
Paused: 0
Stopped: 5
Images: 28
Server version: 28
Storage driver: overlay2
Backing filesystem: extfs
Supports d_type: true
Native Overlay diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
...
Выход docker version
Docker version 18.09.3, build 774a1fa
2 ответа
Я знаю, что Docker использует пул хранения для выделения памяти каждому контейнеру.
Нет. Devicemapper использует пул хранения. Большинство других объединенных файловых систем работают на уровне файлов непосредственно в родительской файловой системе. Поэтому не существует "размера базового устройства" или аналогичных показателей, показывающих заранее выделенные блоки и ограничения.
Вы можете глубже изучить наложенные файловые системы, чтобы понять, как они объединяют каталоги из родительской файловой системы в новую файловую систему, которую вы используете внутри контейнера. У меня есть пример работы с файловой системой наложения в моей вводной презентации:
https://sudo-bmitch.github.io/presentations/docker-intro/presentation.html
Фактические команды, используемые для запуска этой демонстрации оверлея, перечислены в этом файле уценки.
Следовательно, все ограничения, которые у вас есть для контейнеров, использующих что-то вроде файловой системы overlay2, наследуются от родительской файловой системы. Поскольку docker делает все в /var/lib/docker, ваше доступное дисковое пространство в этой файловой системе такое же, как и ограничения, которые вы увидите внутри контейнера. В моей лаборатории это символическая ссылка на каталог в / home, поэтому вы увидите следующее на хосте и внутри контейнера:
$ ls -l /var/lib/docker
lrwxrwxrwx 1 root root 12 Nov 11 2019 /var/lib/docker -> /home/docker
$ df -h /var/lib/docker/.
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/bmitch--t490--vg-home 857G 355G 459G 44% /home
$ docker run -it --rm busybox df -h /
Filesystem Size Used Available Use% Mounted on
overlay 856.5G 354.6G 458.3G 44% /
"Пул хранения" и другие упомянутые вами метрики относятся к драйверу хранилища devicemapper. Драйвер оверлейного хранилища использует обычные файлы и некоторую магию ядра; для Docker нет какого-либо конкретного выделения пространства, и он может использовать все пространство на разделе, смонтированном на/var/lib/docker
.