V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rationa1cuzz
V2EX  ›  Docker

docker postgresql 如何保存实例中的 config

  •  
  •   rationa1cuzz · 2022-02-21 09:47:46 +08:00 · 1183 次点击
    这是一个创建于 997 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,我在一个启动的 postgresql (镜像:postgres )中修改了配置文件( pg_hba.conf postgresql.conf ),主要是一些日志输出格式。想把这个实例保存下来,就像往常一样 commit ,然后重新启动就报错 initdb: error: directory "/var/lib/postgresql/data" exists but is not empty 。

    网上搜了一圈大致原因是应该走了初始化,默认的是初始化路径下又有内容,也尝试了-e PGDATA 参数无效,有没有大佬知道如何处理该问题,
    5 条回复    2022-04-02 21:18:22 +08:00
    yangyaofei
        1
    yangyaofei  
       2022-02-21 10:18:17 +08:00
    commit 之前删了 "/var/lib/postgresql/data" 就好了吧
    rationa1cuzz
        2
    rationa1cuzz  
    OP
       2022-02-21 15:18:23 +08:00
    @yangyaofei 删掉我就无法保存状态的,相当于恢复出厂设置
    另外找到解决办法了参考这边文章: https://www.cnblogs.com/runnerjack/p/7417881.html
    yangyaofei
        3
    yangyaofei  
       2022-02-21 16:48:22 +08:00
    @rationa1cuzz 这..... 如果想保存状态不应该是把那个文件夹作为 volumes 映射出来么....
    rationa1cuzz
        4
    rationa1cuzz  
    OP
       2022-02-21 17:01:57 +08:00
    @yangyaofei 映射出来太麻烦了,想直接放在镜像中,只能这样做,确实映射出来更好更安全,但是我想关于这个镜像的东西都在镜像中,另外,我对启动后的实例的数据并不关心。
    512357301
        5
    512357301  
       2022-04-02 21:18:22 +08:00 via Android
    正常情况下 docker 容器就像一个个虚拟机一样,你在里面的改动是会被保留的,不清楚你是怎么重新启动的,我是通过可视化界面管理的,日常点击启动停止都没事的。
    其次你可以把你已经修改了配置的这个容器导出来,导出成一个新的镜像,然后启动这个镜像,也可以
    还有就是映射到本地文件夹确实是最好的方案,因为这样确实更稳妥,也更利于持久化
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2274 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:13 · PVG 00:13 · LAX 08:13 · JFK 11:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.