是否可以备份正在运行的Docker容器?export
命令是否适合进行备份?
是否可以备份正在运行的Docker容器?export
命令是否适合进行备份?
一位朋友在评论中发表了观点
嗨,斯拉瓦,很抱歉你的问题被关闭了。记录一下,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 Apr 2 '13 at 6:35
添加在此处方便大家从摘要中找到已回答的问题。谢谢Solomon!
export
有一些限制:它不能导出数据卷。这里的数据卷指:
VOLUME
。-v /webapp
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"
docker commit
是我备份容器(启动或停止)的首选方式。创建一个可以命名的镜像:docker commit - p <container_id> <backup-name>
你也可以使用保存和加载.. 这是个例子
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
) 恢复备份
在新的 Docker 机器上,使用 sudo docker images
检查您的镜像