Docker卷:备份
我已经创build了一个卷容器。 还有一个容器从容器中安装。
卷容器:
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
所以这工作正常。 我能够删除和重新创build我的nexus容器,而不会丢失数据。 卷容器(不处于运行状态)正在保存数据。
但是这种方法的瓶颈就是容器。 当我意外删除这个容器时,所有的数据都没有了。 这可以发生得很快,因为一些有用的命令将删除停止的容器也将删除卷容器。
所以我想为我的卷容器创build备份。 我试过的方法:
$ docker cp nexus:/this/folder/ /home/ubuntu/backup-folder
和
$ docker import nexus > /home/ubuntu/backup.tar
所以我有一个文件夹和一个.tar在我的主目录。 现在我想知道导入其中一个备份的正确方法是什么?
我读了有关docker export
命令来创build一个“新的图像”,但我不喜欢这种方法,因为我的备份文件夹是相当大的。
简单地不要使用数据容器容器:自从docker 1.9以后,您可以使用docker volume create
来代替。 Docker现在有卷命令 。
以下示例还使用
docker volume create
命令创build了my-named-volume
卷。
$ 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卷ls列出,您可以备份/var/lib/docker/volumes
。
使用数据卷容器,您需要记住该容器中的数据pathdocker inspect -f '{{ (index .Mounts 0).Source }}
),将其写入文件,并在您使用该path创build一个新的数据卷容器。
我曾经用updateDataContainerPath.sh
来做到这一点。 请参阅“ 重新安装孤立的泊坞窗卷 ”。
自从docker 1.9和命名卷之后,我不需要这个复杂的机制。