Docker镜像理解 什么是镜像 镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含 运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
Docker镜像加载原理 联合文件系统 UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统, 它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系 统下(unite several directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基 础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。 特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件 系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录
简单来说,就是实现文件的复用实现对空间的额节约;相同的文件他会直接使用;
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
bootfs(boot file system)**主要包含bootloader和kernel,bootloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统, 在Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的, 包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。**对应我们的Windows来说就是当我们的Windows开机以后,他的开机动画就没有用了,所以就卸载我们的开机动画;
rootfs(root file system) , 在bootfs之上。包含的就是典型Linux系统中的/dev, /proc, /bin, /etc等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。
上传一个镜像 原因:每一次我们使用类似于tomcat的镜像的时候,我们就会发现他的 webapps 里面没有文件,所以我们想要使用一个我们自己操作过后的镜像,更加方便的使用镜像;
操作如下:
主要使用命令==docker commit -a=”author” -m=”message” name:[TGA]==
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 [root@iZwz94khotag1q066igytrZ /]# docker exec -it e6a3adfeeb48 /bin/bash root@e6a3adfeeb48:/usr/local/tomcat# ls BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work root@e6a3adfeeb48:/usr/local/tomcat# cd webapps root@e6a3adfeeb48:/usr/local/tomcat/webapps# ls root@e6a3adfeeb48:/usr/local/tomcat/webapps# cd .. root@e6a3adfeeb48:/usr/local/tomcat# ll bash: ll: command not found root@e6a3adfeeb48:/usr/local/tomcat# cp -r webapps.dist/* webapps root@e6a3adfeeb48:/usr/local/tomcat# cd webapps root@e6a3adfeeb48:/usr/local/tomcat/webapps# ls ROOT docs examples host-manager manager root@e6a3adfeeb48:/usr/local/tomcat/webapps# exit exit [root@iZwz94khotag1q066igytrZ /]# docker exec -it e6a3adfeeb48 /bin/bash root@e6a3adfeeb48:/usr/local/tomcat# c wbapps bash: c: command not found root@e6a3adfeeb48:/usr/local/tomcat# cd webapps root@e6a3adfeeb48:/usr/local/tomcat/webapps# ls ROOT docs examples host-manager manager root@e6a3adfeeb48:/usr/local/tomcat/webapps# exit exit [root@iZwz94khotag1q066igytrZ /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e6a3adfeeb48 tomcat "catalina.sh run" 2 minutes ago Up 2 minutes 8080/tcp quizzical_chandrasekhar [root@iZwz94khotag1q066igytrZ /]# docker commit e6a3adfeeb48 sha256:0183409589d19364a3352895f109032b965d4d2d9e14c9247aa14e978942c46c [root@iZwz94khotag1q066igytrZ /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e6a3adfeeb48 tomcat "catalina.sh run" 2 minutes ago Up 2 minutes 8080/tcp quizzical_chandrasekhar [root@iZwz94khotag1q066igytrZ /]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 0183409589d1 14 seconds ago 653MB nginx latest bc9a0695f571 5 days ago 133MB tomcat latest e0bd8b34b4ea 10 days ago 649MB centos latest 0d120b6ccaa8 3 months ago 215MB elasticsearch 7.6.2 f29a1ee41030 8 months ago 791MB [root@iZwz94khotag1q066igytrZ /]# docker run -it 0183409589d1