Docker镜像拆装

目标:获取镜像中某几层,或者将镜像文件拆开,对其进行删减后再拼装起来。

镜像加密都是使用:sha256sum

一、导出镜像。

docker save -o image-test.tar.gz 192.168.0.7/ky_test/ky-api:1.0.0

二、解压镜像文件(在单独的目录中)

tar xf image-test.tar.gz

三、查看文件

  repositories         记录了原镜像的名称、标签、校验码
  manifest.json       记录配置文件的名称、原镜像名称、标签、Layers(镜像分层结构关系,第一行表示最底层镜像,以此类推)
  加密字符串.json   该文件为镜像的配置文件,按镜像层次记录这指定镜像过程中自定义的信息,如环境变量、执行命令、文件传输。最后diff_ids字段还记录数据层每一层对接的文件。
  这上面的验证字符串 其实是通过当前层layer.tar文件通过sha256sum计算获得的。
    其他目录   则是每一层的数据文件
    json 记录本层的详细信息,如运行用户、环境变量、执行命令等

    layer.tar 本层的源数据

    tar xf layer.tar 解压源文件

        可以查看到本层的源数据

        基础镜像层往往是根下的文件

        其他层是记录变动的数据

        代码层存放的就是代码数据了

    VERSION 本层的tag信息

四、镜像重组

1、将集成的是数据归档成一个tar文件

2、编写dockerfile文件---声明使用空镜像,如下

FROM scratch

ADD layer.tar /

cmd ["/bin/sh"]

3、制作镜像

docker build -t test:v1 .

4、运行镜像,查看镜像内是否是期望的结果。

docker run -dti --name=mytest2 test:v1