Я некоторое время использовал образ Postgres: 11 docker, пока не заметил, что рядом с моим постоянным монтированием тома "pg-data" (назначение: "/ var / lib / postgresql / data / pgdata") ) был указан другой безымянный том при выполнении docker inspect pgcontainer
, назначение: "/ var / lib / postgresql / data":
"Mounts": [
{
"Type": "volume",
"Name": "pg-data",
"Source": "/data/docker/docker/volumes/pg-data/_data",
"Destination": "/var/lib/postgresql/data/pgdata",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
},
{
"Type": "volume",
"Name": "4d0ab5fd1d81b05f11805f19569e148427194ef465f0d4dc301b200b8308ada6",
"Source": "/data/docker/docker/volumes/4d0ab5fd1d81b05f11805f19569e148427194ef465f0d4dc301b200b8308ada6/_data",
"Destination": "/var/lib/postgresql/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
После дальнейшего исследования выясняется, что Dockerfile сам определяет путь монтирования тома, и я переопределял его с помощью моего docker -compose.yml:
services:
db:
volumes:
- pg-data:/var/lib/postgresql/data/pgdata
volumes:
pg-data:
imposm-cache-data:
Похоже, теперь это вложенный том. Данные хранятся в томе pg-data
, но перед ним всегда автоматически создается другой (безымянный) том. Это работает, но это не идеально, и я бы хотел это исправить.
Я могу предложить только два решения:
Использовать другой контейнер (например, busybox ) смонтировать pg-данные с флагом --volume
и скопировать на другой именованный том с подпапкой «data», затем использовать новый именованный том с измененным путем монтирования на /var/lib/postgresql/data
Другой очевидной идеей было бы клонировать Dockerfile и создать новый без тома.
Поскольку этот том содержит около 100 ГБ данных, вариант 1 будет быть немного медленным Вариант 2 будет означать сохранение другого Docker изображения с этого момента. Оба варианта с оговорками. Есть ли другой подход для реструктуризации томов на основе нового пути монтирования?