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
означает, что контейнер имеет права только читать данную директорию