Вы монтируете том в контейнер при запуске. Программа внутри контейнера не знает, использует ли она том или нет. Все, что вы читаете или пишете по пути тома, автоматически использует том.
Если это вариант, вам следует вообще избегать хранения данных в томах; предпочитаю базы данных, если можешь. Если все ваши данные находятся за пределами контейнера, то очень легко запустить несколько копий контейнера на нескольких хостах. Если вы храните некоторые данные в томах, то при расширении приложения вам нужно беспокоиться о сохранении, репликации и перемещении этих данных.
Хорошее использование томов включает хранение локальных постоянных данных, которые необходимо хранить при перезапуске контейнера. Крепления хост-привязки очень похожи (ИМХО ими легче управлять, но на некоторых платформах есть проблемы с разрешениями и производительностью), и они также могут удовлетворить этот сценарий использования; Крепления host bind также хороши для внедрения файлов конфигурации в приложения и чтения файлов журнала обратно.
(По причинам, не связанным с Docker, может быть удобно хранить данные вне каталога вашего приложения, например, /var/lib/myapp
. Это менее актуально в Docker, где вы обновляете свой код, создавая новый образ, начиная с новый контейнер, а затем монтирование тома поверх файловой системы. Не имеет значения, находятся ли ваши данные в каталоге вашего приложения или нет.)
Также вы пометили это как "Kubernetes". Все вышеперечисленное применимо и здесь (когда я говорю «увеличить», я довольно конкретно думаю о Kubernetes). Постоянные тома Kubernetes могут быть немного хитрее в использовании, чем именованные тома Docker; избегайте томов типа hostPath
(они не будут одинаковыми для нескольких узлов). Возможно, вам придется использовать StatefulSets вместо Deployments, чтобы дать каждому Pod свой собственный PersistentVolume. Получить прямой доступ к содержимому PV еще сложнее, чем в Docker. И наоборот, существуют другие механизмы, такие как ConfigMaps для некоторых задач, таких как внедрение файлов конфигурации. Держитесь подальше от ориентированных на разработчиков шаблонов, которые пытаются связать код приложения в контейнеры, это гораздо сложнее, чем просто перестроить ваш образ, когда это необходимо.