Ваше понимание того, как тома работает, почти правильно, но не полностью.
Как вы заявили, когда вы создаете контейнер из изображения, определяющего VOLUME
, докер действительно создаст анонимный том (то есть со случайным именем).
При остановке / удалении контейнера сам том не будет удален и будет по-прежнему доступен семейству команд docker volume
.
Действительно, чтобы удалить контейнер и удалить связанные тома, вы должны использовать флаг -v
, как в docker rm -v container-name
.Эта команда удалит контейнер и удалит все анонимные тома , связанные с ним (именованный том никогда не будет удален, если явно не запрошено через docker volume rm volume-name
).
Итак, чтобы подвести итог * 1020Директива * внутри Dockerfile используется для идентификации тех мест, в которых будут храниться постоянные данные, и обеспечения следующего:
- данные сохранят жизнь контейнера по умолчанию
- данные могут быть общимис другими контейнерами (т. е.
--volumes-from
)
Наиболее важным аспектом для меня является то, что он также служит своего рода неявной документацией для вашего пользователя, чтобы сообщить им, где хранится постоянное состояние (такчто они могут назвать тома с помощью флага -v
docker run
).