docker将数据容器提交到私有注册表

时间:2014-10-24 05:13:41

标签: docker boot2docker

我已尝试过多种方式,但仍无效。我读过的DOC表明它不可能,但它让我困扰所以我继续挖掘。这是设置:

  • 我有一个数据容器
    • docker build -t databox .
    • docker run -d -v /data -v /data/db --name databox databox
    • (/ data和/ data / db是我共享的数据库容器中的卷)
  • 我有一个测试容器来访问数据容器
    • 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

当我执行恢复时,我所做的编辑丢失了。当我查看图像和容器以及泊坞历史时,我看不到我的编辑。我试图在不同的文件夹中编辑数据库容器,它们都恢复到原始状态。

嗯......这一切意味着什么?

2 个答案:

答案 0 :(得分:3)

您缺少的是Docker数据量如何工作。

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

exportcpsavediffcommit等Docker命令无法访问数据卷。

从Docker数据卷备份数据的正确方法是运行可访问该数据卷的Docker容器,并从容器中运行命令以生成数据存档。有关此主题的更多信息,请阅读Docker user guide on managing data

答案 1 :(得分:2)

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

我希望为开发容器预先填充一个postgres数据卷。

  1. 创建数据库容器(空但在Dockerfile中声明为VOLUME)
  2. 使用--volumes-from databox
  3. 运行bbdb容器
  4. 修改数据堆容器卷内容的方式
  5. 导出/备份数据库内容(Backup, restore, or migrate data volumes
  6. 重新创建数据库容器,但将之前的备份添加到/
  7. databox图像现在已经获得了您想要的内容。我将其推送到本地托管注册表并在启动bbdb容器(等效)之前将其拉下来并将其用作--volumes-from reference。