1 / 13
文档名称:

Docker应用迁移的解决方案培训课件.pptx

格式:pptx   大小:16,721KB   页数:13页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Docker应用迁移的解决方案培训课件.pptx

上传人:fr520520 2019/6/22 文件大小:16.33 MB

下载得到文件列表

Docker应用迁移的解决方案培训课件.pptx

相关文档

文档介绍

文档介绍:Docker应用迁移的解决方案综述Docker是典型的Client-Server工作模式,每一个Docker应用都是运行在机器中的DockerEngine之上。因此,Docker应用的迁移也就是把某个Docker应用,从一个DockerEngine迁移到另一个DockerEngine之上。根据实现的方式不同,Docker应用迁移可以分为离线迁移和在线迁移。离线迁移Docker目前内置了一组命令,用来实现镜像和容器的备份。通过备份、传输、部署能够实现Docker应用的离线迁移。save:将镜像打包至tar格式的压缩文件。load:从tar格式的压缩文件加载镜像。export:将容器的整个文件系统打包至tar格式的压缩文件。import:从tar格式的压缩文件加载容器,并记录为镜像。export/import的过程只保存容器当前的文件系统,而不保存运行状态,因此并不能提供不中断的服务。离线迁移Docker原生提供的这一组命令方便了系统运维,管理员可以轻易的将一台机器上的Docker镜像或者容器进行备份,然后分发给其他的应用场景使用。在线迁移在线迁移是在保持Docker应用运行的状况下,将这个应用从一个DockerEngine迁移到另一个DockerEngine。由于在工作环境下往往不能停机,因此在线迁移是系统运维中必不可少的功能。(2015-04-17更新),实现Docker在线迁移的难点主要有两个:缺乏成熟的容器迁移机制。DockerEngine不能原生支持在线迁移。容器迁移机制虽然没有专门针对Docker的容器迁移机制,但是通过CRIU可以实现容器迁移的大部分功能。CRIU是一个给Linux系统提供Checkpoint和Restore功能的工具,能够完成程序的备份/恢复,以及容器的迁移。在迁移过程中,它能够分批传输要复制的内存,从而保证在极短的停机时间内恢复容器的运行状态。CRIU的工作流程CRIU按照如下4个步骤进行容器的在线迁移:Pre-Dump:将容器的文件系统和内存数据打包,然后发送到目的机器。Dump:将Pre-Dump过程中改变的数据发送到目的机器,得到最终待恢复的容器文件。Restore:从打包好的容器文件中恢复容器的运行状态。Kill:停止原始机器中运行的容器。CRIU的工作流程Dump过程具体的实现细节如下:系统当前状态的信息在/proc中,它包括了文件描述符信息、管道参数和内存分布信息等等。首先需要存档进程树的状态。其次需要存档对每个任务分配的资源情况。最后复制整个内存。Restore过程具体的实现细节如下:首先需要解决共享资源的问题,利用Dump过程的信息恢复共享资源,并划分到对应的进程下。通过多次fork()恢复进程树。恢复包括内存分配,计时器等基本资源。CRIU面临的问题CRIU目前的问题是无法将迁移后的容器挂载到DockerEngine。虽然CRIU能够将原始机器上的Docker应用迁移到目的机器上,但是当容器迁移后,目的机器上的DockerEngine并不能识别这个容器。因此这个容器将处于游离状态,并且不能与DockerEngine发生任何交互操作。DockerEngine原生支持虽然CRIU并不完全支持Docker在线迁移的特性,但是仍然有研究者希望利用CRIU去完善这个功能。Google研究员SaiedKazemi在Github上有一个项目,尝试给Docker加入Checkpoint和Restore功能,从而实现Docker在线迁移。他的做法是修改Docker源码,加入Checkpoint和Restore两条命令,然后调用CRIU提供的功能。目前项目处于开发中的状态,而且需要在未来申请合并到Docker的主线。