#docker #docker-compose #docker-volume
Вопрос:
Я запускаю простой файл docker-compose.yml, содержащий следующие директивы:
services:
postgres:
image: postgres:12
volumes:
- db-data:/var/lib/postgresql/data:cached
volumes:
db-data:
Все работает так, как ожидалось, и, похоже, у postgres нет проблем с созданием и поиском файлов базы данных. Однако «/var/lib/postgresql» даже не существует в файловой системе хоста. «/var/lib/docker/тома/» содержит файлы, но куда указывает «/var/lib/postgresql/данные», если не на файловую систему хоста?
Комментарии:
1. Это может варьироваться в зависимости от драйвера и конфигурации вашего хранилища, но в основном
/var/lib/docker/volumes
. Вы можете получить список известных томов docker с помощьюdocker volume ls
Ответ №1:
Вы можете inspect
volume
указать и получить точное местоположение в файловой системе хоста. Ниже вы можете найти небольшой пример того, как выглядит вывод команды, проверьте значение Mountpoint
:
$ docker volume inspect volume_example_db-data
[
{
"CreatedAt": "2021-07-30T12:34:57 03:00",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "volume_example",
"com.docker.compose.version": "1.27.4",
"com.docker.compose.volume": "db-data"
},
"Mountpoint": "/var/lib/docker/volumes/volume_example_db-data/_data",
"Name": "volume_example_db-data",
"Options": null,
"Scope": "local"
}
]
По умолчанию имя тома получает имя папки в качестве префикса, в моем случае это было volume_example
так, но в вашем случае это будет что-то похожее:
/var/lib/docker/volumes/volume_example_db-data/_data
/var/lib/docker/volumes/ name of volume /_data
выход ls:
cd /var/lib/docker/volumes/volume_example_db-data/_data
# ls
base pg_commit_ts pg_hba.conf pg_logical pg_notify pg_serial pg_stat pg_subtrans pg_twophase pg_wal postgresql.auto.conf postmaster.opts
global pg_dynshmem pg_ident.conf pg_multixact pg_replslot pg_snapshots pg_stat_tmp pg_tblspc PG_VERSION pg_xact postgresql.conf postmaster.pid