docker提交数据容器私人registry

我已经尝试了许多方法,但仍然无法正常工作。 我读过的DOC表明,这是不可能的,但是它困扰着我,所以我继续挖掘。 这是设置:

  • 我有一个数据容器
    • docker build -t databox .
    • docker run -d -v /data -v /data/db --name databox databox
    • (/ data和/ data / db是我分享的databox容器中的卷)
  • 我有一个testing容器来访问数据容器
    • docker run --volumes-from databox -it --name bbdb busybox /bin/sh
    • 我在/data/data/db目录中编辑了一个文件

现在我想快速取出我的数据库容器,将快照按到registry中,从本地删除它,然后恢复先前推送的图像,以便恢复我编辑的两个文件。

我的registry服务器位于127.0.0.1:5000。 这是我的保存:

 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 

当我执行还原时,我所做的编辑已经丢失。 当我查看图像和容器以及docker历史时,我看不到我的编辑。 我试图编辑databox容器在不同的文件夹,他们都恢复到原来的状态。

嗯…这是什么意思?

你缺less的是Docker数据卷的工作方式。

数据卷是不在容器分层文件系统中的容器中的位置。 数据量也不是Docker映像的一部分。 数据卷实际存储在/var/lib/docker/volumes

Docker命令(例如exportcpsavediffcommit无法访问数据卷。

从Docker数据卷备份数据的正确方法是运行可访问该数据卷的Docker容器,并从容器内运行命令以生成数据存档。 有关此主题的更多信息,请阅读有关pipe理数据的Docker用户指南 。

嘿 – 我想分享我是如何实现这一目标的。

我想要为开发容器预先填充postgres数据卷。

  1. 创build数据库容器(空的,但在Dockerfile中声明了VOLUME)
  2. 使用–volumes-from databox运行bbdb容器
  3. 修改数据库容器卷的内容,你想要的
  4. 导出/备份数据库内容( 备份,还原或迁移数据卷 )
  5. 重新创builddatabox容器,但将以前的备份添加到/

数据库图像现在已经得到你想要的内容。 我把它推到一个本地托pipe的registry中,并在启动bbdb容器(equiv)之前将它拉下来,并将其用作–volumes-from引用。