Skip to content

Volumes

Зачем нужны volumes?

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

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

Host Volumes

При запуске контейнера указывается параметр -v и точки монтирования. Пример:

docker run -v /opt/mysql_data:/var/lib/mysql mysql

(Слева находится директория сервера, справа - директория docker контейнера)

Anonymous Volumes

Определенные директории с жесткого диска монтируются в контейнер docker. Пример:

docker run -v /var/lib/mysql mysql

В данном случае автоматически создается директория на сервере для монтирования. Путь такой директории: /var/lib/docker/volumes/HASH/_data

Named Volumes

Указывается имя Volume и куда его надо смонтировать. Пример:

docker run -v mysql_data:/var/lib/mysql mysql

В данному случае на сервере создается директория /var/lib/docker/volumes/mysql_data/_data и уже она монтируется в docker контейнер

Работа с Volume

Просмотр текущих Volumes

docker volume ls

Пример nginx

docker run --name nginx -v /some/content:/usr/share/nginx/html:ro -d nginx

ro - read only означает, что контейнер имеет права только читать данную директорию