Объем определяется здесь, поэтому, когда вы запускаете контейнер (из этого изображения), создается новый анонимный том.
Том будет содержать разумные данные в этом отношении, так что это все, что вам нужно "сохраняться" в целом из этого образа базы данных.
Обычно, когда сопровождающие docker изображений уже знают, где находятся данные, которые будет целесообразно сохранить (как здесь), они будут украшать папка, использующая VOLUME
в Dockerfile. Это, как уже упоминалось, создаст анонимный том во время выполнения, но также заставит вас знать (используя docker inspect
или читая Dockerfile), где находятся тома для сохранения.
В работе вы обычно будете использовать именованный том / путь монтирования в вашем docker -компонентном файле, подключенном к этой самой папке
docker-compose.yml
как именованный том
volumes:
mydbdata:/var/lib/postgresql/data
docker-compose.yml
как путь
volumes:
./local/path/data:/var/lib/postgresql/data
Есть на самом деле недостатки в определении таких VOLUME
определений в Dockerfile, которые я не буду здесь подробно описывать, но основная причина - «время жизни».
Отсутствие VOLUME
в Dockerfile
и выполнение
docker-compose up -d
# do something, manipulate the data
docker-compose down
# all your data would be lost when starting again
docker-compose up -d
Удалит не только работающий контейнер, но и все данные вашей БД, которые могут не соответствовать вашим ожиданиям (вы просто хотели воссоздать контейнеры).
С VOLUME
in Dockerfile, anon-том будет сохраняться даже в течение docker-compose down