Docker Volumes: Managing Data within Containers
Docker volumes - это механизм Docker, который используется для постоянного хранения данных между контейнерами и хостом. Когда вы создаете контейнер Docker с использованием образа, все изменения, которые вы вносите внутри этого контейнера, сохраняются в виде записей о событиях. Это означает, что при каждом запуске контейнера Docker создается новый экземпляр этого контейнера с тем же базовым образом, что может привести к потере всех изменений, которые вы сделали в предыдущем контейнере.
Docker volumes используются для сохранения данных за пределами контейнера Docker, что позволяет сохранять изменения между запусками контейнеров. С помощью volumes можно создавать и подключать блочные устройства различных типов, таких как файловые системы, приводы и тома к контейнерам. Различные типы volumes используются в зависимости от требований и хостовой операционной системы.
Пример создания и использования volume в Docker:
1. Создайте новый volume:
$ docker volume create my-volume
2. Запустите контейнер с созданным volume:
$ docker run -it --name my-container -v my-volume:/data/ ubuntu
3. Войдите в контейнер и создайте файл в созданной директории:
$ docker exec -it my-container bash
$ cd /data/
$ touch my-file
4. Запустите новый контейнер, используя созданный volume:
$ docker run -it --name my-container2 -v my-volume:/data/ ubuntu
5. Проверьте наличие файла, созданного в первом контейнере:
$ docker exec -it my-container2 bash
$ cd /data/
$ ls
Результатом выполнения команды ls будет наличие файла my-file.
В данном примере мы создали новый volume, присвоили ему имя my-volume, запустили контейнер ubuntu и подключили к нему volume. Открыв новую оболочку для контейнера, мы создали файл в директории /data/, а затем запустили новый контейнер, используя тот же volume, который мы создали ранее. Результатом является наличие файла my-file во втором контейнере, что демонстрирует работу с Docker volumes.
Использование Docker volumes позволяет сохранять изменения и данные внутри контейнеров между запусками, что облегчает работу с Docker и повышает эффективность разработки и управления приложениями.