是否可以备份正在运行的Docker容器? export
命令是否适合这样做?
答案 0 :(得分:36)
由一位朋友发表评论
嗨Slava,抱歉你的问题已经结束了。为了记录,Slava谈论的是docker.io,一个Linux容器的运行时。是的,docker export
是一种合适的方法。它将生成整个容器文件系统状态的tarball,并将其转储到stdout上。所以
docker export $CONTAINER_ID > $CONTAINER_ID-backup.tar
将产生可用的tarball。您可以使用
重新导入tarball docker import - slava/$CONTAINER_ID-backup < $CONTAINER_ID-backup.tar
请注意原始元数据(例如原始图像的ID)将丢失。这应该在未来版本的docker中修复。 - Solomon Hykes 2013年4月2日6:35
在此处添加,以便从摘要中找到问题已得到解答。谢谢所罗门!
答案 1 :(得分:7)
export
有一些限制:它不会导出数据卷。
这里的数据量意味着:
VOLUME
。-v /webapp
有关数据的更多信息:https://docs.docker.com/userguide/dockervolumes/
处理这种情况的方法是启动一个新容器,其中包含“ - volumes-from ”参数以挂钩该容器,因此您可以访问该数据卷。
示例:
docker run -it --volumes-from target_container ubuntu bash
docker run -it --volumes-from some_postgres -v /host/path:/container/path --rm ubuntu bash -c "tar -cvf /container/path/postgres-backup.tar /var/lib/postgresql/data"
答案 2 :(得分:0)
使用docker commit
是备份容器(启动或停止)的首选方法。创建一个可以命名的图像:
docker commit - p <container_id> <backup-name>
答案 3 :(得分:-1)
你也可以使用保存和加载..这是样本
sudo docker images
awan@google-dev:~/StarCenter/_docker$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
google_star/_version_1.10 latest 1067d6689697b2 4 days ago 1.666 GB
sudo docker save google_star/_version_1.10 > my_docker-backup.tgz
使用(sudo docker load < my_docker-backup.tgz
)
使用新的泊坞机中的sudo docker images
检查图像