备份正在运行的Docker容器?

Sla*_*a V 58 linux docker linux-containers

是否可以备份正在运行的Docker容器?export命令是否适合这样做?

Jul*_*Nut 37

由一位朋友发表评论

嗨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

添加到这里,以便从摘要中找到问题得到解答.谢谢所罗门!


sem*_*e21 7

export有一些限制:它不会导出数据量.

这里的数据量意味着:

  1. VOLUME在图像的Dockerfile中定义了一个.
  2. 容器以这样的参数开头: -v /webapp

有关数据的更多信息:https://docs.docker.com/userguide/dockervolumes/

处理这种情况的方法是启动一个带有' --volumes-from '参数的新容器来挂钩该容器,这样您就可以访问数据卷了.

例子:

  1. 访问数据:(在bash中)

docker run -it --volumes-from target_container ubuntu bash

  1. 备份到主机:(一个postgres容器)

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"