Драйверы хранилища
Docker имеет множество драйверов хранилищ, которые позволяют работать с соответствующими устройствами хранения. В следующей таблице представлены различные драйверы хранилищ, а также технологии, используемые с ними.
Technology | Storage Driver |
---|---|
OverlayFS | overlay or overlay2 |
AUFS | aufs |
Btrfs | brtfs |
Device Manager | devicemanager |
VFS | vfs |
ZFS | zfs |
Теперь давайте обсудим некоторые случаи, когда вы будете использовать различные драйверы хранилищ:
AUFS
- Стабильный драйвер; может быть использован для готовых приложений.
- Оптимальное потребление памяти; обеспечение беспроблемного использования Docker для контейнеров.
- Высокая активность записи, связанная с этим драйвером, которую следует учитывать.
- Хорош для систем с типом обслуживания «платформа».
Devicemapper
- Стабильный драйвер; обеспечивает беспроблемное взаимодействие с Docker.
- Хорош для тестирования приложений в лаборатории.
- Соответствует основным функциональным возможностям ядра Linux.
Btrfs
- Этот драйвер хорош для обслуживания нескольких пулов сборки.
- Высокая активность записи, связанная с этим драйвером, которую следует учитывать.
- Соответствует основным функциональным возможностям ядра Linux.
Overlay
- Стабильный драйвер, соответствующий основным функциональным возможностям ядра Linux.
- Оптимальное потребление памяти.
- Хорош для тестирования приложений в лаборатории.
ZFS
- Стабильный драйвер; хорош для тестирования приложений в лаборатории.
- Хорошо для систем с типом обслуживания «платформа как услуга».
Чтобы увидеть используемый драйвер хранилища, введите команду docker info.
docker info
Команда предоставит всю соответствующую информацию о компоненте Docker, установленном на хосте Docker.
Пример
sudo docker info
Вывод показывает, что основным драйвером является aufs и что корневой каталог хранится в /var/lib/docker/aufs.
Тома данных
В Docker у вас есть отдельные тома, которые можно использовать в разных контейнерах. Они известны как тома данных. Давайте обозначим некоторые их особенности:
- Они [тома данных] инициализируются при создании контейнера.
- Они могут быть общими, а также повторно использоваться во многих контейнерах.
- Они существуют даже после удаления контейнера.
- Любые изменения самого тома могут быть сделаны напрямую.
Давайте рассмотрим наш контейнер Jenkins. Воспользуемся docker inspect, чтобы вывести информацию об этом образе. Мы можем выполнить следующую команду, чтобы записать вывод команды docker inspect в текстовый файл, а затем просмотреть файл соответствующим образом:
sudo docker inspect Jenkins > tmp.txt
Когда вы просмотрите текстовый файл с помощью команды more, вы увидите запись JENKINS_HOME=/var/Jenkins_home.
Это сопоставление, которое выполняется внутри контейнера через образ Jenkins.
Теперь предположим, что вы хотите сопоставить том в контейнере с локальным томом, тогда вам нужно указать оператор –v при запуске контейнера следующим образом:
sudo docker run –d –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins
Оператор –v используется для сопоставления тома в контейнере, расположенного по пути /var/jenkins_home, с местоположением на нашем хосте Docker, расположенного по пути /home/demo.
Теперь если вы перейдёте в каталог /home/demo на вашем хосте Docker после запуска вашего контейнера, вы увидите все файлы контейнера, присутствующие в нём.
Изменение драйвера хранилища для контейнера
Если вы хотите изменить драйвер хранилища, используемый для контейнера, вы можете сделать это при запуске контейнера с помощью параметра –volume-driver при использовании команды docker run следующим образом:
sudo docker run –d –volume-driver=flocker
–v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins
Параметр –volume-driver используется для указания другого драйвера хранилища для контейнера.
Для подтверждения того, что драйвер был изменён, первым делом давайте воспользуемся командой docker ps, чтобы увидеть работающие контейнеры и получить их ID. Итак, введите следующую команду:
sudo docker ps
После чего выполните docker inspect для контейнера и поместите вывод в текстовый файл с помощью следующей команды:
sudo docker inspect 9bffb1bfebee > temp.txt
Если вы просмотрите текстовый файл и перейдете к строке с надписью VolumeDriver, вы увидите, что имя драйвера было изменено.
Создание тома
Том можно создать заранее с помощью команды docker. Давайте детальнее рассмотрим данную команду:
docker volume create –-name=volumename –-opt options
- name — это имя тома, который необходимо создать.
- opt — эти операторы вы можете указать при создании тома.
Вывод вернёт имя созданного тома.
Пример
sudo docker volume create –-name = demo –opt o = size = 100m
В приведенной выше команде мы создаем том размером 100 МБ с именем demo.
Пример вывода:
Перечисление всех томов
Вы также можете перечислить все тома Docker на хосте Docker. Более подробная информация об этой команде приведена ниже:
docker volume ls
Вывод вернёт все тома на хосте Docker.
Пример
sudo docker volume ls
Пример вывода:
Источник: Docker — Storage