https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://blog.csdn.net/11b202/article/details/21389067
Docker镜像讲解
镜像是什么
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容:代码、库、环境变量、配置文件等。
所有应用,直接打包成Docker镜像,就可以直接跑起来。
Docker镜像加载原理
-
UnionFS (联合文件系统) UnionFS 是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。UnionFS 是Docker 镜像的基础,镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。(不同 Docker 容器就可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率。) 特性:一次同时加载多个文件系统,但从外面看来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终文件系统会包含所有底层的文件和目录。 -
分层原理 (来自 https://blog.csdn.net/11b202/article/details/21389067) Docker的文件系统分为两层:bootfs 和rootfs ; bootfs 主要包含boostloader 和kernel ,bootloader 主要引导加载kernel ,Linux 刚启动时会加载bootfs ,在内核启动之后,bootfs 实际上会unmount 掉。用户不能对这层做任何修改。 对于Linux 上不同版本的问题,docker 可以同时运行多个rootfs 。 Docker的文件系统是分层的,它的rootfs 在mount 之后会转为只读模式。 Docker在它上面添加一个新的文件系统,来达成它的只读。事实上,从下图中,我们能看到多个只读的文件系统,Docker中把他们称为 层。image是只读的,container部分则是可写的。如果用户想要修改底层只读层上的文件,这个文件就会被先拷贝到上层,修改后驻留在上层,并屏蔽原有的下层文件。
commit镜像
$ docker commit -a="zhucz" -m="copy webapps.dist to webapps" 739702468c62 tomcat02:1.0
sha256:9a26e1374d18728160cd009f744002aa39788bcb141f2bea4b935f270cd0fbbb
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat02 1.0 9a26e1374d18 12 seconds ago 684MB
tomcat 9.0 86783bb5af6c 4 days ago 680MB
|