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命令(例如export
, cp
, save
, diff
或commit
无法访问数据卷。
从Docker数据卷备份数据的正确方法是运行可访问该数据卷的Docker容器,并从容器内运行命令以生成数据存档。 有关此主题的更多信息,请阅读有关pipe理数据的Docker用户指南 。
嘿 – 我想分享我是如何实现这一目标的。
我想要为开发容器预先填充postgres数据卷。
- 创build数据库容器(空的,但在Dockerfile中声明了VOLUME)
- 使用–volumes-from databox运行bbdb容器
- 修改数据库容器卷的内容,你想要的
- 导出/备份数据库内容( 备份,还原或迁移数据卷 )
- 重新创builddatabox容器,但将以前的备份添加到/
数据库图像现在已经得到你想要的内容。 我把它推到一个本地托pipe的registry中,并在启动bbdb容器(equiv)之前将它拉下来,并将其用作–volumes-from引用。