一、背景
信创即信息技术应用创新的简称,涵盖了国产软件、国产芯片以及云计算等各个方向,也可以理解为常说的“ZZKK(自主可控)”, ZZKK是指对国内企事业单位应用系统中关键软硬件部件的安全性、可靠性、性能稳定性、安全接入等方面进行评估和测试的过程。信创的发展核心就在于通过行业应用拉动构建国产化信息技术,软硬件底层架构体系,全周期生态体系,解决核心技术被国外“卡脖子”的问题。
信创的目标就是在核心芯片、基础硬件、电脑、操作系统、中间件、数据服务器等领域实现国产替代。本单位某系统在信创ZZKK OS改造过程中,涉及部分主机采用了docker容器化部署,本文对此讨论,如何对OS改造前主机上的容器实例进行迁移和恢复,以提供参考。
关联资源:信创行业政策、词汇说明、镜像分层、构建Ai
二、docker容器数据
首先docker容器是分层架构,实际的数据就是底层的不可变image层+一层顶部可读写的用户空间容器层,而底层的image又可由多层构建,最底层为内核层,其上为base image层,之后每一层都可由用户构建容器时自定义或通过Dockerfile的RUN命令指定创建,即每一次在base image上执行的安装软件或进行修改或增加新的内容时,就会在当前镜像层之上创建新的镜像层,而每一层新镜像都是上一层的父镜像,再dockerfile里体现为FROM指定引入的那个镜像就是parent image(比如:FROM ubuntu:14.04 ),最常见的就是最开始的从镜像库pull下来的镜像就是父镜像,对于Base image对应就是在Dockerfile 中没有 FROM 行,或 FROM scratch(从最小镜像开始)开头的,通常base 镜像都是各种 Linux 发行版的 Docker 镜像。综上,docker采用这种分层次的文件系统结构来实现container的文件系统。
基于此,docker镜像层+容器层,我们是可以提交成新镜像导出的;但是还有可能出现容器卷和宿主数据卷映射/挂载到容器内的情况,这部分的数据也需要考虑进去: