首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重构停靠器持久卷/挂载路径

重构停靠器持久卷/挂载路径
EN

Stack Overflow用户
提问于 2020-02-12 05:52:08
回答 2查看 115关注 0票数 0

我曾经使用Postgres:11 docker映像一段时间,直到我注意到在我的持久卷挂载"pg-data“(目的地:"/var/lib/postgresql/data/pgdata")旁边还有另一个未命名的卷在执行docker inspect pgcontainer时列出:"/var/lib/postgresql/data":

代码语言:javascript
复制
"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重写了这个路径:

代码语言:javascript
复制
services:
  db:
    volumes:
      - pg-data:/var/lib/postgresql/data/pgdata

volumes:
  pg-data:
  imposm-cache-data:

它现在似乎是一个嵌套的卷。数据存储在卷pg-data中,但另一个(未命名)卷总是在它之前自动创建。它能工作,但这并不理想,我想修复它。

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

  1. 使用另一个容器(例如busybox)挂载带有--volume标志的pg-数据,并将其复制到另一个带有子文件夹"data“的命名卷,然后使用新的命名卷,并更改挂载路径到/var/lib/postgresql/data
  2. 另一个明显的想法是克隆Dockerfile并创建一个没有卷的新的。

因为该卷中有大约100 be的数据,所以选项1会比较慢。选项2将意味着从现在起保持另一个码头形象。这两个选项都有警告。是否有其他方法可用于基于新的挂载路径重组卷?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-12 10:16:06

我只会接受几乎是空的匿名卷的事实。

Docker为您直接操作卷的内容提供了相当少的选项,您列出的选项基本上是您可以选择的,而无需尝试操作Docker内部。在这两种情况下,分叉PostgreSQL映像以删除其VOLUME似乎是一个持续存在的大规模维护问题。因此,如果您有时间和磁盘空间,一次卷副本更好。

另一种选择(这可能是值得偶尔尝试的)是站起来一个新的清洁系统。在上面安装Docker,然后用您想要的目录/卷布局启动PostgreSQL,但它是空的。现在从备份恢复此数据库。

票数 1
EN

Stack Overflow用户

发布于 2020-02-12 05:59:27

这里所发生的是Dockerfile正在为您创建一个匿名卷,而您在其中创建另一个,名为,名为pg-data。

您只需使用上面一个级别的命名卷,它就可以解决您的问题。

代码语言:javascript
复制
pg-data:/var/lib/postgresql/data
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60181942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档