我创建了一个卷容器。以及一个从卷容器安装到 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
And
$ docker import nexus > /home/ubuntu/backup.tar
所以我的主目录中有一个文件夹和一个 .tar。
现在我想知道导入这些备份之一的正确方法是什么?
我读到了关于docker export
命令创建“新图像”,但我不喜欢这种方法,因为我的备份文件夹非常大。
干脆不要使用数据卷容器:从 docker 1.9 开始,你可以使用docker volume create https://docs.docker.com/engine/reference/commandline/volume_create/反而。 Docker 现在有音量命令 https://docs.docker.com/engine/userguide/containers/dockervolumes/#mount-a-shared-storage-volume-as-a-data-volume.
以下示例还创建了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 https://github.com/VonC/b2d/blob/912b988add3e532c3d073767fc66c2f5759df152/updateDataContainerPath. See "重新附加孤立的 docker 卷 https://stackoverflow.com/a/37203287/6309".
自 docker 1.9 和命名卷以来,我不再需要那种复杂的机制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)