Где физически хранятся данные из базы данных в docker контейнере?
Намереваюсь поднять базу данных в docker (neo4j но тип базы данных не имеет значения в моем вопросе) для своего pet-проекта. Ранее docker не использовал. Не могу понять, если запустить базу данных в контейнере и постепенно данные будут заполняться пользователями моего приложения, то где физически эти данные будут храниться. Я верно понимаю, что "volume" именно для этого и предназначено, а лимит хранения данных ограничен доступным объемом памяти сервера, на котором запущен контейнер?
Ответы (1 шт):
Ответ на ваш вопрос разбивается на две части.
База данных лежит в файловой системе. Где именно зависит от базы данных и параметров конфигурации этой базы. Пример - postgres. По-умолчанию СУБД в контейнере хранит базы в
/var/lib/postgresql/dataТеперь о физике. Где именно будет находится каталог
/var/lib/postgresql/в вашем контейнере зависит от того как вы создадите/запустите контейнер. Уdocker runесть опция-vкоторая указывает докеру отмапить каталог хоста в путь в контейнере.
Если создать контейнер с постгресом вот так:
docker run -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password -p 5432:5432 \
--name postgres-inside postgres
то физически данные будут лежать внутри контейнера.
Если же создать контейнер с постгресом вот так:
docker run -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password -p 5432:5432 \
-v /home/user/data:/var/lib/postgresql/data --name postgres-outside postgres
то физически данные будут лежать вне контейнера, в каталоге /home/user/data хостовой файловой системы.