Docker 容器备份及迁移教程

阅读时长 8 分钟读完

前言

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,而不用担心运行环境的问题。Docker 容器的灵活性,使得它成为了前端开发中非常重要的工具之一。本文将介绍 Docker 容器的备份及迁移教程,帮助广大前端开发者更好地运用 Docker 容器。

Docker 镜像与容器

Docker 安装后,首先需要了解 Docker 中的两个重要概念:Docker 镜像和 Docker 容器。

Docker 镜像是一种只读的文件系统,具有所有系统需要运行的文件,包括系统文件、应用程序、依赖和配置。

Docker 容器是 Docker 镜像的一个实例。容器是用 Docker 镜像创建的运行时环境,容器可以运行、开始、停止、移动和删除。容器的本质是进程,但它拥有自己的文件系统,网络配置和资源隔离。

Docker 容器备份

当 Docker 容器中有重要的数据时,我们需要对容器进行备份。Docker 容器的备份有两种方式,一种是备份容器的镜像,另一种是备份容器的数据卷。

备份容器镜像

备份容器镜像非常简单,只需要执行以下命令即可:

这条命令将会创建一个新的 Docker 镜像,包含了当前容器的所有更改。container_id 为 Docker 容器的 ID,而 backup_image_name 为备份后创建的 Docker 镜像名称。备份完成后,可以使用以下命令来查看 Docker 镜像:

备份容器数据卷

如果容器中有重要的数据,我们需要对数据卷进行备份。Docker 容器的数据卷同样也有两种备份方式:手动备份和自动备份。

手动备份

手动备份的方式更加灵活,需要以下步骤:

  1. 执行以下命令,创建一个新的容器,并挂载需要备份的数据卷:

    命令含义:

    • --rm:容器退出后自动清理容器的数据;

    • --volumes-from container_name:从要备份的容器(container_name)中挂载数据卷到当前容器;

    • -v $PWD:/backup:将当前目录挂载到容器中,用于备份数据卷;

    • ubuntu:使用 Ubuntu 镜像作为容器镜像;

    • tar cvf /backup/backup.tar /data:打包备份 /data 目录,保存在当前目录下的 backup.tar 文件中。

  2. 执行以下命令,将备份文件传回本地:

    命令含义:

    • container_id:备份数据卷容器的 ID;

    • .:将备份文件传回当前目录;

  3. 执行以下命令,删除备份容器:

    命令含义:

    • backup_container:备份数据卷的容器名称。

自动备份

自动备份的方式更加便捷,需要通过 Docker 容器的 --mount 参数为容器挂载卷,并使用卷压缩命令周期性备份卷中的文件。以下是一个自动备份的示例:

-- -------------------- ---- -------
-------- ---
---------
  ---
    ------ --------
    ------------
      ------------------ -------
    --------
      - --------------------------------
    -------
      --------- -
      ----------
        -------
          ----- -----
          ------- ---
      ---------------
        ---------- ----------
    ------------
      ----- ------------- ----------- -- -------------------------------------------------------
      --------- ---
      -------- --
      -------- -

  -------
    ------ -------
    --------
      - ----------------
      - ----------------
    -------
      --------- -
      ----------
        ------------ ---------- -- --------
      ---------------
        ---------- ----------
    -------- -
      -- -- ---- ---- ----------------------- ---------------------- ---------

--------
  --------
  --------

上面示例将数据库容器 db 和备份容器 backup 一起部署。容器 db 使用 POSTGRES_PASSWORD 环境变量指定管理员密码,并挂载名为 db-data 的卷。容器 backup 挂载卷 db-data 并使用 tar 命令进行备份,备份文件存在名为 backups 的卷中。

Docker 容器迁移

当需要将 Docker 容器从一台机器迁移到另一台机器时,我们需要将容器备份并传送到目标机器。接下来,将介绍三种 Docker 容器迁移方式:Docker 镜像导入导出、Docker 容器导入导出和 Docker Swarm。

Docker 镜像导入导出

Docker 镜像导入导出是一种简单的容器迁移方式。首先,在原机器上将容器备份为 Docker 镜像,然后将 Docker 镜像传送到新机器,并在新机器上导入为 Docker 容器。以下是具体步骤:

在原机器上执行以下命令,将容器备份为 Docker 镜像:

命令含义:

  • container_id:待备份容器的 ID;

  • backup_image_name:备份后的 Docker 镜像名称;

  • docker save -o backup_image_name.tar backup_image_name:将备份 Docker 镜像存为 backup_image_name.tar 文件。

然后,将备份 Docker 镜像传送到新机器。在新机器上执行以下命令,将 Docker 镜像导入为 Docker 容器:

命令含义:

  • docker load:将 Docker 镜像导入为 Docker 容器;

  • docker run -it backup_image_name:启动导入的 Docker 容器。

Docker 容器导入导出

Docker 容器导入导出方式比较麻烦,但它可以完整地导出 Docker 容器所有信息。以下是具体步骤:

在原机器上执行以下命令,导出 Docker 容器:

命令含义:

  • backup_container.tar:备份文件名;

  • container_id:待备份容器的 ID。

然后,将备份文件传送到新机器。在新机器上执行以下命令,将 Docker 容器导入:

命令含义:

  • docker import:导入备份文件为 Docker 容器;

  • backup_image_name:新的 Docker 容器名称。

Docker Swarm

Docker Swarm 是 Docker 官方提供的容器集群管理工具,它可以方便地将容器迁移到其它节点。以下是具体步骤:

在原节点上执行以下命令,将容器启动为 Docker Swarm 服务:

命令含义:

  • my_service:服务名称;

  • 1:服务的实例数;

  • published=1111,target=80:将容器暴露在 1111 端口;

  • nginx:latest:容器镜像。

然后,在新节点上执行以下命令,加入 Docker Swarm 集群:

命令含义:

  • token:原节点 docker swarm init 命令产生的 token 值;

  • ipport:原节点的 IP 和端口。

最后,在新节点上启动服务:

命令含义:

  • my_service:迁移过来的服务名称。

总结

本文详细介绍了 Docker 容器备份及迁移教程。在实际应用中,需要根据自己的需求选择最合适的方式。不管选择哪种方式,备份和迁移的基本思路都是先备份,然后再将备份复制到目标机器,接着导入或启动即可。Docker 容器的灵活性和便捷性,使得前端开发工作更简单、高效。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6461f3e0968c7c53b0348b9c

纠错
反馈