如何将非持久性docker容器转换为持久性存储(卷)? 问题

如何将非持久性docker容器转换为持久性存储(卷)? 问题,docker,docker-compose,Docker,Docker Compose,我搞砸了,启动了一个prestashop docker容器(通过compose)进行生产,但忘了向其中添加一个持久卷。我已经建立了我的商店,现在我所有的数据都悬而未决。我需要以某种方式将当前docker容器转换为具有持久卷的容器 我尝试过的事情 我已经将当前容器中的所有数据复制到本地文件夹中,创建了一个新的撰写文件,如果我chmod-R 777整个目录,一切都会正常工作,但是人们会因为这些类型的犯罪而下地狱,所以这不是一个选项 由于我不是专家,我没有其他想法。您遇到的问题很可能与拥有旧容器中文件

我搞砸了,启动了一个prestashop docker容器(通过compose)进行生产,但忘了向其中添加一个持久卷。我已经建立了我的商店,现在我所有的数据都悬而未决。我需要以某种方式将当前docker容器转换为具有持久卷的容器

我尝试过的事情 我已经将当前容器中的所有数据复制到本地文件夹中,创建了一个新的撰写文件,如果我
chmod-R 777
整个目录,一切都会正常工作,但是人们会因为这些类型的犯罪而下地狱,所以这不是一个选项


由于我不是专家,我没有其他想法。

您遇到的问题很可能与拥有旧容器中文件的用户id/组id有关。当您移动到新容器时,如果ID不相同,您将遇到问题,因此
chmod-R 777
正在解决此问题,但地狱之门是敞开的

最好了解哪些用户id和组id应该是文件的所有者,并使用
chown
chgrp
从新容器中设置正确的所有者。

好的

所以这是一个非常简单的解决方案:

  • sudo su
  • 使用
    docker inspect container
    获取长字符串散列
    822adf62adsomethingsomething
    转到非持久性容器存储位置
  • 然后
    cd/var/lib/docker/overlay2/822adf62adsomethingsomething/merged
    。这是所有docker容器文件
  • cp-a whateveryouwant/whereeveryyouwant
    as
    cp-a
    保持权限和所有者的完整性
  • 利润

  • 好吧,我试试看。我认为会有一种更简单的docker原生方式来进行这种转换。你用的是最简单的方式。你可以通过破解容器定义来做到这一点,我已经做了好几次了,但是这一次有更宽的地狱之门,不要去那里