Есть две основные категории данных - постоянные и непостоянные.
Постоянные - это данные, которые вам необходимо сохранить. Вещи как; записи клиентов, финансовые данные, результаты исследований, журналы аудита и даже некоторые типы данных журнала приложений. Непостоянные - это данные, которые вам не нужно хранить.
Оба важны, и Docker предлагает решения для обоих. Для работы с непостоянными данными каждый контейнер Docker получает собственное непостоянное хранилище. Он автоматически создается для каждого контейнера и тесно связан с жизненным циклом контейнера. В результате при удалении контейнера будет удалено хранилище и все данные на нем. Чтобы иметь дело с постоянными данными, контейнер должен хранить их в томе. Тома - это отдельные объекты, жизненные циклы которых отделены от контейнеров. Это означает, что вы можете создавать тома и управлять ими независимо, и они не привязаны к жизненному циклу какого-либо контейнера. Net результат, вы можете удалить контейнер, который использует том, и этот том не будет удален.
Этот доступный для записи уровень локального хранилища управляется на каждом Docker хосте драйвером хранилища (не путать с драйвером громкости). Если вы используете Docker в производственной среде на Linux, вам необходимо убедиться, что вы сопоставили правильный драйвер хранилища с дистрибутивом Linux на вашем Docker хосте. Используйте следующий список в качестве руководства:
Red Hat Enterprise Linux: используйте драйвер overlay2 с современными версиями RHEL, работающими под управлением Docker 17.06 или выше. Используйте драйвер devicemapper со старыми версиями. Это относится к Oracle Linux и другим исходящим и исходящим дистрибутивам, связанным с Red Hat.
Ubuntu: используйте драйверы overlay2 или aufs. Если вы используете ядро Linux 4.x или выше, вам следует go с overlay2.
SUSE Linux Enterprise Server: используйте драйвер хранилища btrfs.
Windows Windows имеет только один драйвер, и он настроен по умолчанию.
По умолчанию Docker создает новые тома с встроенный локальный драйвер. Как следует из названия, тома, созданные с помощью локального драйвера, доступны только контейнерам на том же узле, что и том. Вы можете использовать флаг -d, чтобы указать другой драйвер. Сторонние драйверы громкости доступны как плагины. Они обеспечивают Docker беспрепятственный доступ к внешним системам хранения, таким как облачные сервисы хранения и локальные системы хранения, включая SAN или NAS.
$ docker volume inspect myvol
[
{
"CreatedAt": "2020-05-02T17:44:34Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/myvol/_data",
"Name": "myvol",
"Options": {},
"Scope": "local"
}
]
Обратите внимание, что драйвер и область действия являются локальными. Это означает, что том был создан с помощью локального драйвера и доступен только контейнерам на этом хосте Docker. Свойство Mountpoint сообщает нам, где в файловой системе хоста Docker находится том.
С монтированием привязки
version: '3.7'
services:
maria_db:
image: mariadb:10.4.13
environment:
MYSQL_ROOT_PASSWORD: Test123@123
MYSQL_DATABASE: database
ports:
- 3306:3306
volumes:
- /etc/localtime:/etc/localtime:ro
- ./data_mariadb/:/var/lib/mysql/
С монтированием тома
version: "3.8"
services:
web:
image: mariadb:10.4.13
volumes:
- type: volume
source: dbdata
target: /var/lib/mysql/
volumes:
dbdata:
Объяснение креплений-привязок
Крепления-привязи существуют с первых дней Docker. Привязочные крепления имеют ограниченную функциональность по сравнению с томами. Когда вы используете привязку, файл или каталог на хост-машине монтируется в контейнер. На файл или каталог ссылается его полный или относительный путь на хост-машине. Напротив, когда вы используете том, новый каталог создается в каталоге хранилища Docker на хост-компьютере, и Docker управляет содержимым этого каталога.
tmpfs монтирует объяснение
Тома и привязки монтирования позволяют вам обмениваться файлами между хост-машиной и контейнером, так что вы можете сохранять данные даже после остановки контейнера. Если вы используете Docker на Linux, у вас есть третий вариант: tmpfs mounts. Когда вы создаете контейнер с монтированием tmpfs, контейнер может создавать файлы за пределами доступного для записи уровня контейнера. В отличие от томов и привязок, монтирование tmpfs является временным и сохраняется только в памяти хоста. Когда контейнер останавливается, монтирование tmpfs удаляется, и файлы, записанные в него, не сохраняются.
Объяснение тома
Тома являются предпочтительным механизмом для хранения данных, созданных и используемых контейнерами Docker. В то время как привязка монтирования зависит от структуры каталогов на хост-машине, тома полностью управляются Docker.