Где docker хранит данные об объемах?

#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