## Хранение данных

1. [Хранение данных в Docker](https://habr.com/ru/companies/slurm/articles/534334/)

При запуске контейнер получает доступ на чтение ко всем слоям образа, а также создает свой исполняемый слой с возможностью создавать, обновлять и удалять файлы. Все эти изменения не будут видны для файловой системы хоста и других контейнеров, даже если они используют тот же базовый образ. При удалении контейнера все измененные данные также будут удалены. В большинстве случаев это предпочтительное поведение, однако иногда данные необходимо расшарить между несколькими контейнерами или просто сохранить.

Рассмотрим два способа хранения данных контейнеров:

* **named volumes** – именованные тома хранения данных
Позволяет сохранять данные в именованный том, который располагается в каталоге в `/var/lib/docker/volumes` и не удаляется при удалении контейнера. Том может быть подключен к нескольким контейнерам

```bash
# named volume

# Запуск контейнера jenkins с подключением каталога /var/jenkins_home как тома jenkins_home
docker run --detach \
--name jenkins --publish 80:8080 \
--volume=jenkins_home:/var/jenkins_home/ \
jenkins/jenkins:lts-jdk11

# Просмотр томов
docker volume ls 

# Удаление неиспользуемых томов и очистка диска. Для удаления тома все контейнеры, в которых он подключен, должны быть остановлены и удалены
docker volume prune
```

* **bind mount** – монтирование каталога с хоста
Позволяет монтировать файл или каталог с хоста в контейнер. На практике используется для проброса конфигурационных файлов или каталога БД внутрь контейнера

```bash
# bind mount

# Запуск контейнера node-exporter с монтированием каталогов внутрь контейнера в режиме read only: /proc хоста прокидывается в /host/proc:ro внутрь контейнера, /sys - в /host/sys:ro, а / - в /rootfs:ro
docker run \
-p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
--name node-exporter \
prom/node-exporter:v1.1.2
```

---

[4.3.2 Dockerfile Theme](./4.3.2%20Dockerfile.md) | [Back To iTWiki Contents](https://github.com/eldaroid/iTWiki) | [4.3.4 Network Driver](./4.3.4%20NetworkDriver.md)
