Docker容器迁移几种方法 2021-08-27 17:14
IT工作的小伙伴们都知道,应用、数据迁移在日常的工作中是不可避免的。比如硬件升级、数据中心搬迁、操作系统替换、版本更新等等,所有这些操作都可能成为迁移的触发点。 现如今Docker容器技术的采用十分普遍,容器迁移也是迁移任务的一部分。磐林IT小编今天跟大家说一说Docker容器迁移的几种方法。 导出和导入容器导出容器就是从容器的文件系统创建压缩文件,导出的文件保存为“gzip”文件。 docker export container-name | gzip > container-name.gz 然后用文件传输工具将压缩文件复制到新服务器。在新服务器中导入这个gzip文件到一个新容器中。 zcat container-name.gz | docker import - container-name 但是导出容器工具的一个缺点是,它不导出容器的端口和变量,也不导出包含容器的底层数据,当在新的服务器环境中加载时,会导致错误。 要避免这种情况,我们可以用Docker镜像迁移 容器镜像迁移将Docker容器迁移到另一台服务器的最常用方法是迁移容器关联到的镜像。 对于必须迁移的容器,首先使用“Docker commit”命令将其Docker镜像保存到压缩文件中。 docker commit container-id image-name 将生成的镜像上传到新服务器上,使用“docker run”创建一个新容器。 使用此方法,数据卷不会被迁移,它仅仅保留在容器内创建的应用程序数据。 保存和加载镜像Docker镜像是应用程序的代码、库、配置文件等的包,Docker容器是由这些镜像创建的。 我们可以使用“docker save”压缩镜像并迁移到新服务器。 docker save image-name > image-name.tar 在新服务器中,使用“docker load”将压缩镜像文件用于创建新镜像。 cat image-name.tar | docker load 迁移数据卷Docker容器中的数据卷是共享目录,其中包含特定于容器的数据。卷中的数据是持久的,在容器重新创建期间不会丢失。 使用导出或提交工具将Docker容器或镜像从一台服务器迁移到另一台服务器时,不会迁移基础数据卷。在这种情况下,包含数据的目录将手动迁移到新服务器。然后在新服务器创建容器,引用该目录作为其数据卷。 另一个简单的方法是通过在“docker run”命令中传递“-volumes from”参数来备份和恢复数据卷。 docker run --rm --volumes-from datavolume-name -v $(pwd):/backup image-name tar cvf backup.tar /path-to-datavolume 这里datavolume名称是/path-to-datavolume。此命令提供数据卷的备份。 要指定工作目录,还可以指定-w/backup。在/backup文件夹中生成的备份可以通过文件传输工具复制到新服务器。然后提取复制的备份并将其还原到新容器中的数据卷中。 docker run --rm --volumes-from datavolume-name -v $(pwd):/backup image-name bash -c "cd /path-to-datavolume && tar xvf /backup/backup.tar --strip 1" 迁移整个Docker容器以上的方法适用于单个容器,但是将所有容器都要从一台服务器迁移到另一台服务器的情况下,我们可以采用另一种方法。 这个方法包括将整个docker目录(“/var/lib/docker”)复制到新服务器。 为了使这种方法成功,需要确定以下几个关键点。 - 保留文件夹的权限和所有权。
- 迁移前停止Docker服务。
- 验证两台服务器中的Docker版本是否兼容。
- 迁移前后验证容器列表和功能。
- 环境变量和其他配置文件的路径。
Docker容器广泛应用于DevOps和基于web托管。小伙伴们可以尝试使用以上方法进行操作。
|