Docker镜像详解

目录

  • 1. UnionFS联合文件系统
  • 2. Docker镜像加载原理
  • 3. 镜像分层的好处
  • 4. docker commit-从容器生成新镜像

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等。容器层是可读可写的

Docker镜像详解_第1张图片

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 ~]# 

你可能感兴趣的:(docker,unionFS,镜像加载原理,镜像分层,docker,commit)