大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我们知道,docker镜像一般由一个或多个layer层组成,docker镜像由image id唯一标识. 如何通过image id找到其layer层镜像文件,我们具体看下.
成都创新互联作为成都网站建设公司,专注重庆网站建设公司、网站设计,有关成都企业网站建设方案、改版、费用等问题,行业涉及软装设计等多个领域,已为上千家企业服务,得到了客户的尊重与认可。
以如下nginx镜像为例演示
docker image ls命令可以查看所有镜像列表,其内容是存在repositories.json中,nginx镜像完整image id是b8cf2cbeabb915843204ceb7ef0055fecadd55c2b0c58ac030e01fe75235885a
在image/overlay2/imagedb/content/目录下,可以找到image id命名的镜像信息描述文件,其中的diff_id指向layer层.
通过diff_id并不能直接找到layer层的位置,diff_id首先指向的是/home/docker/image/overlay2/layerdb/下layer层描述文件,以chain id命名.
diff_id与chainid转换关系如下 :
ChainID = sha256sum(父层chainid + " " + 本层diff_id)
chainid 目录下cache-id即是layer层的文件名,得到diff_id、 chain_id、cache_id三者之间对应关系如下:
得到cache_id后,就可以在/home/docker/overlay2/目录找到image对应的layer层文件,如下:
可以看到lowdir由6个layer层+1个init层组成,init上面是upperdir + merged层
在linux平台下,我们可以通过dmesg |grep kvm命令来查看。
如果CPU没有虚拟化的话,显示如下:
如果开启的话,显示如下:
如果你的CPU支持VT虚拟化,则会在flags里面显示vmx,如下所示:
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
当然光CPU支持VT虚拟化还不够的,还需要在bios里面将VT-X或VT-D选项打开才能真正使用。