我们知道,docker镜像一般由一个或多个layer层组成,docker镜像由image id唯一标识. 如何通过image id找到其layer层镜像文件,我们具体看下.
创新互联基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业成都服务器托管报价,主机托管价格性价比高,为金融证券行业服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
以如下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层
您好,
首先,在你的电脑上安装VMware Workstation,并准备一个Ubuntu的镜像文件。
双击打开VMware Workstation,并点击“打开虚拟机”。
在弹出的窗口里找到Ubuntu的文件夹并点进去,可以看到一个写有主机名的文件(后缀为vmx),选中它。
这样就会创建一个主机的选项卡,可以在窗口里看到。
在选项卡里点击“开启此虚拟机”,就会开始进行加载了,等待一段时间直到出现登录界面。
出现登录界面后,在密码一栏里输入密码(默认123456),然后按回车。
成功进入Linux的桌面。
在linux平台下,我们可以通过dmesg |grep kvm命令来查看。
如果CPU没有虚拟化的话,显示如下:
如果开启的话,显示如下:
在终端执行cat /proc/cpuinfo命令,找到flags部分,如果其中输出有VMX或SVM,即表明支持虚拟化技术。
cat /proc/cpuinfo | grep vmx ##(for Intel CPU)
or
cat /proc/cpuinfo | grep svm ##(for AMD CPU)
三、Linux显示的flags部分解释:
fpu – Onboard FPU
vme – Virtual Mode Extensions
de – Debugging Extensions
pse – Page Size Extensions
tsc – Time Stamp Counter
msr – Model-Specific Registers
pae – Physical Address Extensions
mce – Machine Check Architecture
cx8 – CMPXCHG8 instruction
apic – Onboard APIC
sep – SYSENTER/SYSEXIT
mtrr – Memory Type Range Registers
pge – Page Global Enable
mca – Machine Check Architecture
cmov – CMOV instructions (plus FCMOVcc, FCOMI with FPU)
pat – Page Attribute Table
pse36 – 36-bit PSEs
pn – Processor serial number
clflush – CLFLUSH instruction
dts – Debug Store
acpi – ACPI via MSR
mmx – Multimedia Extensions
fxsr – FXSAVE/FXRSTOR, CR4.OSFXSR
sse – SSE
sse2 – SSE2
ss – CPU self snoop
ht – Hyper-Threading
tm – Automatic clock control
ia64 – IA-64 processor
pbe – Pending Break Enable
syscall – SYSCALL/SYSRET
mp – MP Capable
nx – Execute Disable
mmxext – AMD MMX extensions
fxsr_opt – FXSAVE/FXRSTOR optimizations
pdpe1gb – GB pages
rdtscp – RDTSCP
lm – Long Mode (x86-64)
3dnowext – AMD 3DNow! extensions
3dnow – 3DNow!
k8 – Opteron, Athlon64
k7 – Athlon
constant_tsc – TSC ticks at a constant rate
up – smp kernel running on up
pebs – Precise-Event Based Sampling
bts – Branch Trace Store
nonstop_tsc – TSC does not stop in C states
pni – SSE-3
pclmulqdq – PCLMULQDQ instruction
dtes64 – 64-bit Debug Store
monitor – Monitor/Mwait support
ds_cpl – CPL Qual. Debug Store
vmx – Hardware virtualization //intel的虚拟化技术VT技术
smx – Safer mode
est – Enhanced SpeedStep
tm2 – Thermal Monitor 2
ssse3 – Supplemental SSE-3
cid – Context ID
fma – Fused multiply-add
cx16 – CMPXCHG16B
xptr – Send Task Priority Messages
pdcm – Performance Capabilities
dca – Direct Cache Access
sse4_1 – SSE-4.1
sse4_2 – SSE-4.2
x2apic – x2APIC
aes – AES instructions
xsave – XSAVE/XRSTOR/XSETBV/XGETBV
avx – Advanced Vector Extensions
hypervisor – Running on a hypervisor
lahf_lm – LAHF/SAHF in long mode
cmp_legacy – If yes HyperThreading not valid
svm – Secure virtual machine //AMD的虚拟化技术AMD-V
extapic – Extended APIC space
cr8legacy – CR8 in 32-bit mode
abm – Advanced bit manipulation
sse4a – SSE-4A
ibs – Instruction Based Sampling
sse5 – SSE-5
skinit – SKINIT/STGI instructions
wdt – Watchdog timer
如果你的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选项打开才能真正使用。