searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Docker镜像压缩包解压的镜像层文件和镜像RootFS之间的映射关系分析

2023-06-16 03:26:51
148
0

Docker RootFS是Docker镜像中的根文件系统,也就是Docker容器启动后所使用的文件系统。Docker RootFS由多个只读层(read-only layer)组成,其中最底层的只读层称为base layer,它包含了操作系统的文件系统和一些基础的工具和库。而之后的只读层则是在base layer的基础上增加了一些新的文件和修改了一些文件,这样就形成了完整的文件系统。当我们使用docker save命令将镜像保存为tar包时,实际上是将这些只读层的tar文件打包成一个大的tar文件。通过分析Docker镜像压缩包解压的镜像层文件和镜像RootFS之间的关系,可以帮助我们更好地了解镜像的构建过程和组成结构,从而更好地管理和维护Docker镜像。

下载、打包、解压镜像

docker pull nginx:latest

mkdir -p ~/test

docker save -o ~/test/nginx.tar nginx:latest

cd ~/test

tar -xvf nginx.tar

镜像分层文件查看

  • docker inspect nginx:latest 查看镜像 RootFS 信息

    • "RootFS": {
                  "Type": "layers",
                  "Layers": [
                      "sha256:ac4d164fef90ff58466b67e23deb79a47b5abd30af9ebf1735b57da6e4af1323",
                      "sha256:a8311013964725a288e00b53cfcf67d9303c4b3bc2ad7475cfc3b25867580ace",
                      "sha256:4ca29ffc4a01ee651811c21b457cea0f2f5d5b0270d258208391a17998675a79",
                      "sha256:bf8b62fb2f13ed1f2da4fd11f8136180c3284e88af95d7f00d21c8064f99f3b1",
                      "sha256:7757099e19d2d8f2e1c09c9076524f912de42e6c76bc8a082ff178d74b5f54a6",
                      "sha256:12a568acc014fad0d74cfa5509c6f55e80db2afb199ad5c1bdff05e2b6d1e5c7",
                      "sha256:9e96226c58e7d2ab330522f49a51eb25037d4f89bfc53fa2c10b910184fa6b78"
                  ]
              }
  • 查看镜像tar包解压之后的文件夹

    •  

      ├── 00d5c5e5d0a19adb9036d43cd48eaf0f258c244e559abe490494ef64412af3df
      │   ├── json
      │   ├── layer.tar
      │   └── VERSION
      ├── 0c86edae507f55fa16002173eaacb2e47287a68d12b751faa87dbbde957bb6d3
      │   ├── json
      │   ├── layer.tar
      │   └── VERSION
      ├── 28d43826d84d2204400a588e56d0c2cf7bb55cb67d034d3050bdc7898c8adb55
      │   ├── json
      │   ├── layer.tar
      │   └── VERSION
      ├── 2a08e4bd702fcd75953db538ecd13fd646e672dc9639260c773029ad770396a2
      │   ├── json
      │   ├── layer.tar
      │   └── VERSION
      ├── bd960aa9ca15c6fd2999137a7039ad92e6250b97b78691b187342365ebcddb0c
      │   ├── json
      │   ├── layer.tar
      │   └── VERSION
      ├── cc2150f8f1b853545c0f466b808a55fe56fc379d767ca9528b0fbcfd6d2d5a35
      │   ├── json
      │   ├── layer.tar
      │   └── VERSION
      ├── eb4a57159180767450cb8426e6367f11b999653d8f185b5e3b78a9ca30c2c31d.json
      ├── f181d77f1665c11b08f6ec0a30a9f294086d4a2fee432dfb5eb33176f998f9a4
      │   ├── json
      │   ├── layer.tar
      │   └── VERSION
      ├── manifest.json
      ├── nginx.tar
      └── repositories

     

映射关系分析

  • 计算解压之后的各层文件的layter.tar的sha256
    • sha256sum 00d5c5e5d0a19adb9036d43cd48eaf0f258c244e559abe490494ef64412af3df/layer.tar
      • sha256:12a568acc014fad0d74cfa5509c6f55e80db2afb199ad5c1bdff05e2b6d1e5c7
    • sha256sum 0c86edae507f55fa16002173eaacb2e47287a68d12b751faa87dbbde957bb6d3/layer.tar
      • sha256:9e96226c58e7d2ab330522f49a51eb25037d4f89bfc53fa2c10b910184fa6b78
    • sha256sum 28d43826d84d2204400a588e56d0c2cf7bb55cb67d034d3050bdc7898c8adb55/layer.tar
      • sha256:7757099e19d2d8f2e1c09c9076524f912de42e6c76bc8a082ff178d74b5f54a6
    • sha256sum 2a08e4bd702fcd75953db538ecd13fd646e672dc9639260c773029ad770396a2/layer.tar
      • sh256:ac4d164fef90ff58466b67e23deb79a47b5abd30af9ebf1735b57da6e4af1323
    • sha256sum bd960aa9ca15c6fd2999137a7039ad92e6250b97b78691b187342365ebcddb0c/layer.tar
      • sha256:4ca29ffc4a01ee651811c21b457cea0f2f5d5b0270d258208391a17998675a79
    • sha256sum cc2150f8f1b853545c0f466b808a55fe56fc379d767ca9528b0fbcfd6d2d5a35/layer.tar
      • sha256:a8311013964725a288e00b53cfcf67d9303c4b3bc2ad7475cfc3b25867580ace
    • sha256sum f181d77f1665c11b08f6ec0a30a9f294086d4a2fee432dfb5eb33176f998f9a4/layer.tar
      • sha256:bf8b62fb2f13ed1f2da4fd11f8136180c3284e88af95d7f00d21c8064f99f3b1

由上可以得出结论,通过docker save下载的镜像tar包解压之后的文件夹为一串随机生成的字符,镜像RootFS各层被打包成了layer.tar,放进了文件夹中,通过计算各个文件夹下的layer.tar的sha256值,可以得到RootFS和docker镜像tar包各文件夹的映射关系。

应用场景

Docker镜像防篡改:发现Docker容器本地镜像非法篡改的风险,确保容器运行安全。

Docker镜像还原:通过解压tar包,还原完整的镜像,以便于在其他环境中部署和运行镜像。

0条评论
作者已关闭评论
魏****洋
4文章数
0粉丝数
魏****洋
4 文章 | 0 粉丝
原创

Docker镜像压缩包解压的镜像层文件和镜像RootFS之间的映射关系分析

2023-06-16 03:26:51
148
0

Docker RootFS是Docker镜像中的根文件系统,也就是Docker容器启动后所使用的文件系统。Docker RootFS由多个只读层(read-only layer)组成,其中最底层的只读层称为base layer,它包含了操作系统的文件系统和一些基础的工具和库。而之后的只读层则是在base layer的基础上增加了一些新的文件和修改了一些文件,这样就形成了完整的文件系统。当我们使用docker save命令将镜像保存为tar包时,实际上是将这些只读层的tar文件打包成一个大的tar文件。通过分析Docker镜像压缩包解压的镜像层文件和镜像RootFS之间的关系,可以帮助我们更好地了解镜像的构建过程和组成结构,从而更好地管理和维护Docker镜像。

下载、打包、解压镜像

docker pull nginx:latest

mkdir -p ~/test

docker save -o ~/test/nginx.tar nginx:latest

cd ~/test

tar -xvf nginx.tar

镜像分层文件查看

  • docker inspect nginx:latest 查看镜像 RootFS 信息

    • "RootFS": {
                  "Type": "layers",
                  "Layers": [
                      "sha256:ac4d164fef90ff58466b67e23deb79a47b5abd30af9ebf1735b57da6e4af1323",
                      "sha256:a8311013964725a288e00b53cfcf67d9303c4b3bc2ad7475cfc3b25867580ace",
                      "sha256:4ca29ffc4a01ee651811c21b457cea0f2f5d5b0270d258208391a17998675a79",
                      "sha256:bf8b62fb2f13ed1f2da4fd11f8136180c3284e88af95d7f00d21c8064f99f3b1",
                      "sha256:7757099e19d2d8f2e1c09c9076524f912de42e6c76bc8a082ff178d74b5f54a6",
                      "sha256:12a568acc014fad0d74cfa5509c6f55e80db2afb199ad5c1bdff05e2b6d1e5c7",
                      "sha256:9e96226c58e7d2ab330522f49a51eb25037d4f89bfc53fa2c10b910184fa6b78"
                  ]
              }
  • 查看镜像tar包解压之后的文件夹

    •  

      ├── 00d5c5e5d0a19adb9036d43cd48eaf0f258c244e559abe490494ef64412af3df
      │   ├── json
      │   ├── layer.tar
      │   └── VERSION
      ├── 0c86edae507f55fa16002173eaacb2e47287a68d12b751faa87dbbde957bb6d3
      │   ├── json
      │   ├── layer.tar
      │   └── VERSION
      ├── 28d43826d84d2204400a588e56d0c2cf7bb55cb67d034d3050bdc7898c8adb55
      │   ├── json
      │   ├── layer.tar
      │   └── VERSION
      ├── 2a08e4bd702fcd75953db538ecd13fd646e672dc9639260c773029ad770396a2
      │   ├── json
      │   ├── layer.tar
      │   └── VERSION
      ├── bd960aa9ca15c6fd2999137a7039ad92e6250b97b78691b187342365ebcddb0c
      │   ├── json
      │   ├── layer.tar
      │   └── VERSION
      ├── cc2150f8f1b853545c0f466b808a55fe56fc379d767ca9528b0fbcfd6d2d5a35
      │   ├── json
      │   ├── layer.tar
      │   └── VERSION
      ├── eb4a57159180767450cb8426e6367f11b999653d8f185b5e3b78a9ca30c2c31d.json
      ├── f181d77f1665c11b08f6ec0a30a9f294086d4a2fee432dfb5eb33176f998f9a4
      │   ├── json
      │   ├── layer.tar
      │   └── VERSION
      ├── manifest.json
      ├── nginx.tar
      └── repositories

     

映射关系分析

  • 计算解压之后的各层文件的layter.tar的sha256
    • sha256sum 00d5c5e5d0a19adb9036d43cd48eaf0f258c244e559abe490494ef64412af3df/layer.tar
      • sha256:12a568acc014fad0d74cfa5509c6f55e80db2afb199ad5c1bdff05e2b6d1e5c7
    • sha256sum 0c86edae507f55fa16002173eaacb2e47287a68d12b751faa87dbbde957bb6d3/layer.tar
      • sha256:9e96226c58e7d2ab330522f49a51eb25037d4f89bfc53fa2c10b910184fa6b78
    • sha256sum 28d43826d84d2204400a588e56d0c2cf7bb55cb67d034d3050bdc7898c8adb55/layer.tar
      • sha256:7757099e19d2d8f2e1c09c9076524f912de42e6c76bc8a082ff178d74b5f54a6
    • sha256sum 2a08e4bd702fcd75953db538ecd13fd646e672dc9639260c773029ad770396a2/layer.tar
      • sh256:ac4d164fef90ff58466b67e23deb79a47b5abd30af9ebf1735b57da6e4af1323
    • sha256sum bd960aa9ca15c6fd2999137a7039ad92e6250b97b78691b187342365ebcddb0c/layer.tar
      • sha256:4ca29ffc4a01ee651811c21b457cea0f2f5d5b0270d258208391a17998675a79
    • sha256sum cc2150f8f1b853545c0f466b808a55fe56fc379d767ca9528b0fbcfd6d2d5a35/layer.tar
      • sha256:a8311013964725a288e00b53cfcf67d9303c4b3bc2ad7475cfc3b25867580ace
    • sha256sum f181d77f1665c11b08f6ec0a30a9f294086d4a2fee432dfb5eb33176f998f9a4/layer.tar
      • sha256:bf8b62fb2f13ed1f2da4fd11f8136180c3284e88af95d7f00d21c8064f99f3b1

由上可以得出结论,通过docker save下载的镜像tar包解压之后的文件夹为一串随机生成的字符,镜像RootFS各层被打包成了layer.tar,放进了文件夹中,通过计算各个文件夹下的layer.tar的sha256值,可以得到RootFS和docker镜像tar包各文件夹的映射关系。

应用场景

Docker镜像防篡改:发现Docker容器本地镜像非法篡改的风险,确保容器运行安全。

Docker镜像还原:通过解压tar包,还原完整的镜像,以便于在其他环境中部署和运行镜像。

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0