Как использовать команду docker volume rm для удаления томов

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы научитесь управлять томами Docker с помощью команды docker volume rm. Вы начнете с создания тома, а затем потренируетесь в его удалении.

Кроме того, вы рассмотрите сценарии, когда том используется контейнером, и попытаетесь удалить его, поняв поведение по умолчанию и способ принудительного удаления тома, который в данный момент подключен к запущенному контейнеру.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") subgraph Lab Skills docker/run -.-> lab-555262{{"Как использовать команду docker volume rm для удаления томов"}} docker/ls -.-> lab-555262{{"Как использовать команду docker volume rm для удаления томов"}} docker/ps -.-> lab-555262{{"Как использовать команду docker volume rm для удаления томов"}} docker/rm -.-> lab-555262{{"Как использовать команду docker volume rm для удаления томов"}} docker/inspect -.-> lab-555262{{"Как использовать команду docker volume rm для удаления томов"}} docker/create -.-> lab-555262{{"Как использовать команду docker volume rm для удаления томов"}} docker/volume -.-> lab-555262{{"Как использовать команду docker volume rm для удаления томов"}} end

Создание тома

На этом этапе вы научитесь создавать тома Docker. Тома представляют собой предпочтительный способ сохранения данных, которые создаются и используются контейнерами Docker. В то время как привязанные тома (bind mounts) зависят от структуры каталогов хост-машины, тома полностью управляются Docker.

Для создания тома используйте команду docker volume create, за которой следует имя, которое вы хотите дать тому. Создадим том с именем myvolume.

docker volume create myvolume

Если создание прошло успешно, вы должны увидеть имя тома, выведенное в консоль.

Теперь убедимся, что том был создан, перечислив все доступные тома с помощью команды docker volume ls.

docker volume ls

В выводе вы должны увидеть myvolume в списке.

Попытка удаления тома

На этом этапе вы попытаетесь удалить том, который вы создали на предыдущем этапе. Чтобы удалить том Docker, используйте команду docker volume rm, за которой следует имя тома.

Попробуем удалить том myvolume.

docker volume rm myvolume

Если удаление прошло успешно, вы должны увидеть имя тома, выведенное в консоль.

Теперь убедимся, что том был удален, еще раз перечислив все доступные тома.

docker volume ls

В выводе вы больше не должны видеть myvolume.

Удаление тома

На предыдущем этапе вы попытались удалить том. Теперь убедимся, что он был удален. Используйте ту же команду docker volume rm, за которой следует имя тома.

docker volume rm myvolume

Если том был успешно удален на предыдущем этапе, вы, возможно, увидите ошибку, указывающую, что том не найден. Это ожидаемое поведение и подтверждает, что том был удален. Если том не был удален на предыдущем этапе, эта команда удалит его сейчас.

Чтобы убедиться, что том был удален, перечислите тома еще раз.

docker volume ls

myvolume не должен появиться в списке.

Создание тома и контейнера с его использованием

На этом этапе вы создадите новый том, а затем создадите контейнер Docker, который будет использовать этот том для хранения данных.

Сначала создадим новый том с именем mydata.

docker volume create mydata

Далее запустим простой контейнер ubuntu и смонтируем том mydata в каталог /app внутри контейнера. Также запустим команду, которая запишет некоторый текст в файл в смонтированном томе.

Перед запуском контейнера загрузим образ ubuntu, чтобы убедиться, что он доступен локально.

docker pull ubuntu

Теперь запустим контейнер и запишем данные в том:

docker run -d --name mycontainer -v mydata:/app ubuntu bash -c "echo 'Hello from the volume!' > /app/greeting.txt && tail -f /dev/null"

Разберем эту команду по частям:

  • docker run: Команда для запуска нового контейнера.
  • -d: Запускает контейнер в отсоединенном режиме (в фоновом режиме).
  • --name mycontainer: Назначает контейнеру имя mycontainer.
  • -v mydata:/app: Это монтирование тома. Он монтирует том Docker с именем mydata в каталог /app внутри контейнера.
  • ubuntu: Используемый образ Docker.
  • bash -c "echo 'Hello from the volume!' > /app/greeting.txt && tail -f /dev/null": Команда, которая будет запущена внутри контейнера. Она записывает "Hello from the volume!" в файл с именем greeting.txt в каталоге /app (который является смонтированным томом), а затем запускает tail -f /dev/null, чтобы контейнер продолжал работать.

Чтобы убедиться, что контейнер запущен и том подключен, можно проверить информацию о контейнере.

docker inspect mycontainer

Найдите раздел "Mounts" в выводе. Вы должны увидеть запись о томе mydata, смонтированном в /app.

Попытка удалить используемый том

На этом этапе вы попытаетесь удалить том mydata, пока он все еще используется контейнером mycontainer. Это продемонстрирует, что происходит, когда вы пытаетесь удалить том, который активно смонтирован в работающем контейнере.

Используйте команду docker volume rm, чтобы попытаться удалить том mydata.

docker volume rm mydata

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

Чтобы убедиться, что том не был удален, перечислите тома еще раз.

docker volume ls

В выводе вы по-прежнему должны увидеть mydata.

Принудительное удаление используемого тома

На предыдущем этапе вы узнали, что нельзя удалить том, который в данный момент используется работающим контейнером. Однако могут быть ситуации, когда вам нужно удалить том, даже если он используется. Docker позволяет принудительно удалить том с помощью флага -f или --force в команде docker volume rm.

Примечание: Принудительное удаление используемого тома может привести к потере данных и непредвиденному поведению контейнера, который его использует. Используйте эту опцию с осторожностью.

Попробуем принудительно удалить том mydata, пока контейнер mycontainer все еще запущен.

docker volume rm -f mydata

Вы должны увидеть имя тома, напечатанное в консоли, что означает, что он был удален.

Теперь убедимся, что том был удален, перечислив все тома.

docker volume ls

Тома mydata больше не должно быть в списке.

Вы также можете проверить статус контейнера mycontainer.

docker ps

Контейнер mycontainer может по-прежнему отображаться в списке работающих контейнеров, но он может быть в неработоспособном состоянии или остановиться неожиданно, так как его том был удален.

Наконец, остановим и удалим контейнер, чтобы очистить систему.

docker stop mycontainer
docker rm mycontainer

Резюме

В этом практическом занятии (лабораторной работе) вы узнали, как управлять томами Docker с помощью команды docker volume. Вы начали с создания тома с именем myvolume с использованием команды docker volume create и проверили его существование с помощью docker volume ls. Затем вы практиковали удаление тома с использованием docker volume rm и подтвердили его удаление, перечислив тома еще раз.

Вы также исследовали поведение команды docker volume rm, когда том используется контейнером. Вы создали том и контейнер, который его использовал, и обнаружили, что попытка прямого удаления тома завершилась неудачей. Наконец, вы узнали, как принудительно удалить используемый том, добавив флаг -f в команду docker volume rm.