如何使用历史数据将图像和容器移动到新服务器

时间:2016-09-30 17:12:50

标签: docker

图片:

docker save -o /root/bkp1/docker_image_bkp ccn/ccn-server:1.0.4

容器:

docker export cef0dff04e70 > /root/bkp1/container.tar

在新服务器中:

docker load -i /root/pmmbkp1/docker_image_bkp

cat /root/bkp1/container.tar | docker import - ccdata

我创造并开始了它。但我无法在新服务器中找到旧数据。如何将历史数据与容器一起移动?

1 个答案:

答案 0 :(得分:0)

目前(2016年9月),petdocker save甚至docker export无法生成tar文件,其中包含容器内安装的卷中包含的任何数据。

简而言之,如果您希望将卷数据从一个服务器移动到另一个服务器,最好的方法是使用共享文件系统来存储docker容器的数据。请查看Mount a shared-storage volume as a data volume文档。

为Docker群集创建共享存储后,可以在原始服务器中停止旧容器,然后使用相同的配置在另一台服务器中启动新容器。旧容器和新容器都应安装与共享存储系统中存在的卷相同的卷。

数据持久性仍然是Docker的编排系统中的一个问题。但是另一个编排工具Kubernetes 1.4现在支持Persistent Volumes

编辑:

如果您的容器已在运行并且您想要移动它,您可以尝试执行以下步骤:

  1. 将原始容器保存到docker commitdocker save的图片中。然后将保存的图像加载到新服务器。

  2. 检查原始容器的挂载点,然后使用挂载点配置查找本地卷文件。例如,使用docker commit,您可以找到与此类似的内容:

    " Mounts":[

    docker inspect

    ],

  3. 您可以在此处看到挂载点为{ "Name": "95d7a2419c62242149562d5098edcc7578754ae2f3c35a45c4d690f3c340905a", "Source": "/var/lib/docker/volumes/95d7a2419c62242149562d5098edcc7578754ae2f3c35a45c4d690f3c340905a/_data", "Destination": "/var/lib/mysql", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" }

    1. 将本地卷文件复制到新服务器。

    2. 在新服务器中启动一个新容器,其中新容器应将原始本地卷文件的副本装入其中。您可以使用"/var/lib/docker/volumes/95d7a2419c62242149562d5098edcc7578754ae2f3c35a45c4d690f3c340905a/_data"命令的docker run参数来实现它。

    3. 您可能需要考虑使用相同的配置在新服务器中启动新容器。 -v命令可以帮助您找到容器的配置以及挂载点配置。

    4. 上述解决方案可能看起来很复杂和丑陋,但除非您使用共享存储,否则没有其他方法可以轻松移动容器。