庖丁解牛Docker镜像剖析虫虫搜奇

现在越来越多的企业基于容器和云来构建自己的基础架构,管理的容器越来越多,时而会遇到一些容器镜像不知道是干嘛的?容器运行时参数是什么?容器跑的应用是什么?针对这些疑问今天就是学习如何剖析在线的容器及其镜像的构造和内容。

镜像内容

首先容器镜像实际上是一个tarball打包的文件。

我们可以用dockersave把镜像输出为tar文件。

dockersavevbkunin/itop:2.7.0/tmp/itop.tar

然后解开该tar包

tarxvfitop.tar

解开后目录中,是一层层的镜像哈希命名的目录,每一层(一个目录)有三个文件VERSION、json和layer.tar,总体还有一个manifest.json,一个配置json和repositories

我们首先看看manifest.json的内容,格式混乱不便理解,为了查看其内容我们使用jq。

jq.manifest.json

可见itop2.7.0这个镜像由25层构成。我们再来看看配置的json里面有什么内容?

jq.ecd46ce38fdec1edecdcefaa4bab6b.json

文件内容较长,我们看最前面部分:

可以用jqkeys列出其配置项目里面的键:

jqkeysecd46ce38fdec1edecdcefaa4bab6b.json

包括容器基本信息项目architecture、author、config、container、container-config、created、docker_version、history、os和rootfs,其中最重要是中间的history部分,列出了镜像中的每层构成,基本上对应Dockerfile中的每一个条语句,一句对应一层,然后整个堆叠起来就构成了完整的镜像。

jq.historyecd46ce38fdec1edecdcefaa4bab6b.json

我们常常看到Dockerfile中会把一系列的操作都放在一起,就是为了减少执行的语句,减少层数从节省空间,比如本镜像中最关键安装步骤为:

{

"created":"-04-26T15:46:29.Z",

"created_by":"

2ITOP_FILENAME=iTop-2.7.0-1-.zipITOP_VERSION=2.7.0-1/bin/sh-capt-getinstall-ysoftware-properties-


转载请注明:http://www.aierlanlan.com/rzfs/5600.html

  • 上一篇文章:
  •   
  • 下一篇文章: