重组docker永久卷/装载路径

问题描述 投票:0回答:1

我使用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中,但是总是在其之前自动创建另一个(未命名)卷。它可以工作,但这并不理想,我想解决这个问题。

我只能提出两种解决方案:

  1. 使用另一个容器(例如busybox)安装带有--volume标志的pg-data,并复制到带有子文件夹“ data”的另一个命名卷,然后使用更改后的安装路径到/var/lib/postgresql/data的新命名卷。>

  2. 另一个明显的想法是克隆Dockerfile并创建一个没有卷的新副本。

  3. 由于该卷中有大约100GB的数据,所以选项1会比较慢。选项2意味着从现在开始维护另一个Docker映像。两种选择都有警告。是否有其他方法可用于基于新的安装路径来重组卷?

我使用Postgres:11 docker映像已有一段时间,直到我注意到在我的持久卷装载“ pg-data”(目标:“ / var / lib / postgresql / data / pgdata”)旁边,还有一个未命名的...

docker mount volumes
1个回答
0
投票

这里发生的是Dockerfile正在为您创建一个匿名卷

© www.soinside.com 2019 - 2024. All rights reserved.