Docker镜像详解

1. UnionFS联合文件系统

联合文件系统是一种分层、轻量级并且高性能的文件系统,是docker镜像的基础,可以将不同目录挂载到同一个虚拟文件系统下

可以基于基础镜像(没有父镜像)进行修改,每一次对文件系统的修改都是在继承父镜像,叠加成一个新的文件系统。最后多个文件系统联合形成一个新的镜像

联合文件系统将镜像的各层文件系统叠加起来,对外是一个文件系统,包含所有的底层文件和目录

2. Docker镜像加载原理

bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引导加载kernel。不同的操作系统发行版的bootfs基本是一样的。镜像层是只读的

和Linxu一样,Docker从镜像启动容器时,会加载最底层的bootfs引导文件系统。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统会卸载bootfs

rootfs(root file system),在bootfs之上。包含的就是典型Linux系统中的/dev、/proc、/bin、/etc等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等。容器层是可读可写的

镜像加载

3. 镜像分层的好处

继承:新的镜像是继承父镜像而来的,所有镜像都是从base镜像来的
磁盘储存和内存加载:多个镜像继承同一个父镜像,父镜像(如base镜像)在Docker Host上保存一份,且加载时也只加载一份到内存中

4. docker commit-从容器生成新镜像

docker commit将容器,包括容器中我们自己编写的文件,打包成一个新的镜像。再使用此镜像启动一个新的容器,还会有我们自己编写的文件

[root@docker ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED         SIZE
redis             latest    7614ae9453d1   4 months ago    113MB
hello-world       latest    feb5d9fea6a5   7 months ago    13.3kB
centos            latest    5d0da3dc9764   7 months ago    231MB
[root@docker ~]# 
[root@docker ~]# docker commit -m "docker commit描述" -a="docker commit作者" 471be286443a bulut/my-centos:8.8
sha256:c1ba58473199c5818a845c6361df352350ba74b1e8955f249535c55a27a9db77
[root@docker ~]# 
[root@docker ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED         SIZE
bulut/my-centos   8.8       c1ba58473199   4 seconds ago   231MB
redis             latest    7614ae9453d1   4 months ago    113MB
hello-world       latest    feb5d9fea6a5   7 months ago    13.3kB
centos            latest    5d0da3dc9764   7 months ago    231MB
[root@docker ~]# 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值