迁移到引擎1.10 | Migrate to Engine 1.10
从DockerEngine的1.10版本开始,我们完全改变了磁盘上图像数据的寻址方式。以前,每个图像和层都使用一个随机分配的UUID。在1.10中,基于图像和层数据的安全散列,我们使用ID实现了内容可寻址方法。
这种新方法为用户提供了更多的安全性,提供了一种避免ID冲突的内置方式,并保证了在拉动、推送、加载或保存后的数据完整性。它还带来了更好的层共享,允许许多图像自由地共享它们的层,即使它们不是来自同一个构建。
通过其内容对图像进行寻址,还可以让我们更容易地检测是否已经下载了一些内容。因为我们有分开的图像和层,所以您不必为原始构建链中的每一个映像提取配置。我们也不需要为没有修改文件系统的构建指令创建层。
内容可寻址性是新发行特性的基础。图像拉和推代码已经被重新加工,使用下载/上传管理器的概念,这使得推拉图像更加稳定,并减轻了任何并行请求问题。下载管理器还会对失败的下载进行重试,并为并发下载提供更好的优先级。
我们还引入了一种新的清单格式,它构建在内容可寻址基础之上。它直接引用内容可寻址图像配置和层校验和。新的清单格式还使清单列表能够用于针对多个体系结构/平台。移动到新的清单格式将是完全透明的。
准备升级
为了使新模型能够访问当前映像,我们必须将它们迁移到内容可寻址存储。这意味着计算当前数据的安全校验和。
当您第一次启动DockerEngine 1.10时,所有当前的图像、标签和容器都会自动迁移到新的基础上。在加载容器之前,守护进程将计算当前数据所需的所有校验和,完成后,所有图像和标记都将具有全新的安全ID。
虽然这是一个简单的操作,但是如果您有大量的图像数据,计算SHA 256校验和文件可能需要时间。平均而言,您应该假设Migrator可以以100 MB/s的速度处理数据。在此期间,您的Docker守护进程将无法响应请求。
最小化迁移时间
如果您可以接受这一次hit,那么升级Docker引擎并重新启动守护进程将透明地迁移您的映像。但是,如果希望最小化守护进程的停机时间,则可以在旧守护进程仍在运行时运行迁移实用程序。
这个工具将找到所有当前图像并计算它们的校验和。升级并重新启动守护进程之后,迁移图像的校验和数据将已经存在,从而使守护进程从该计算工作中解脱出来。如果在迁移和升级之间出现了新的图像,这些图像将在升级到1.10时处理。
迁移工具也可以作为Docker映像运行。在运行Migrator映像时,需要向容器公开Docker数据目录。如果使用默认路径,则会运行:
$ docker run --rm -v /var/lib/docker:/var/lib/docker docker/v1.10-migrator
如果使用devicemapper存储驱动程序,还需要传递标志。--privileged
若要使工具访问存储设备,请执行以下操作。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com