我已尝试过多种方式,但仍无效。我读过的DOC表明它不可能,但它让我困扰所以我继续挖掘。这是设置:
docker build -t databox .
docker run -d -v /data -v /data/db --name databox databox
docker run --volumes-from databox -it --name bbdb busybox /bin/sh
/data
和/data/db
目录现在我想抓住我的数据库容器,将快照推送到注册表,从本地删除它,然后恢复我之前推送的图像,以便恢复我编辑的两个文件。
我的注册表服务器位于127.0.0.1:5000。这是我的SAVE:
docker tag databox 127.0.0.1:5000/databox:latest
docker commit databox 127.0.0.1:5000/databox:latest
docker push 127.0.0.1:5000/databox:latest
我的恢复就像:
docker run -d -v /data -v /data/db --name databox databox
当我执行恢复时,我所做的编辑丢失了。当我查看图像和容器以及泊坞历史时,我看不到我的编辑。我试图在不同的文件夹中编辑数据库容器,它们都恢复到原始状态。
嗯......这一切意味着什么?答案 0 :(得分:3)
您缺少的是Docker数据量如何工作。
数据卷是容器中不属于容器分层文件系统的位置。数据卷也不是Docker镜像的一部分。数据量实际存储在/var/lib/docker/volumes
。
export
,cp
,save
,diff
或commit
等Docker命令无法访问数据卷。
从Docker数据卷备份数据的正确方法是运行可访问该数据卷的Docker容器,并从容器中运行命令以生成数据存档。有关此主题的更多信息,请阅读Docker user guide on managing data。
答案 1 :(得分:2)
我希望为开发容器预先填充一个postgres数据卷。
databox图像现在已经获得了您想要的内容。我将其推送到本地托管注册表并在启动bbdb容器(等效)之前将其拉下来并将其用作--volumes-from reference。