Docker卷:备份

时间:2016-05-26 13:17:00

标签: docker backup tar

我创建了一个卷容器。还有一个从容器中安装到en的容器。

卷容器:

docker run -d --name nexus-data nexus:1.0 echo "data-only container for Nexus"

我的Nexus容器:

docker run -d -p 8443:8443 -p 8081:8081  --name nexus --restart=always --volumes-from nexus-data nexus:1.0

所以这个工作正常。我能够删除并重新创建我的nexus容器,而不会丢失数据。卷容器(不处于运行状态)正在保存数据。

但这种方法的瓶颈是容量容器。当我意外删除此容器时,所有数据都消失了。 这可能发生得非常快,因为一些有用的命令会删除已停止的容器,也会删除卷容器。

所以我想为我的卷容器创建备份。 我尝试了方法:

$ docker cp nexus:/this/folder/ /home/ubuntu/backup-folder

$ docker import nexus > /home/ubuntu/backup.tar

所以我的主目录中有一个文件夹和一个.tar。 现在我想知道导入其中一个备份的正确方法是什么?

我读到了docker export命令来创建一个新图像'但是我不喜欢这种方法,因为我的备份文件夹非常大。

1 个答案:

答案 0 :(得分:4)

根本不使用数据卷容器:自docker 1.9起,您可以使用docker volume create代替。 Docker现在有volume commands

  

以下示例还使用my-named-volume命令创建docker volume create卷。

$ docker volume create --name my-named-volume -o size=20GB
$ docker run -d -P \
  -v my-named-volume:/opt/webapp \
  --name web training/webapp python app.py

这些卷已命名,由docker volume ls列出,您可以备份/var/lib/docker/volumes

使用数据卷容器,您需要记住该容器(docker inspect -f '{{ (index .Mounts 0).Source }})中的数据路径,将其写入文件,并在创建新的数据卷容器时使用该路径。 /> 我曾经用updateDataContainerPath.sh做到这一点。请参阅“Reattaching orphaned docker volumes”。

自Docker 1.9和命名卷以来,我不需要那种复杂的机制。