Docker镜像 详细
Posted CSR-kkk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker镜像 详细相关的知识,希望对你有一定的参考价值。
Docker 镜像
镜像
镜像是一种轻量级、可执行的独立软件包,用于打包 软件运行环境 和 基于环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
获取镜像途径:
- 远程仓库下载
- 拷贝
- 自己制作 DockerFile
Docker 镜像加载原理
UnionFS(联合文件系统)
UnionFS:是一种分层、轻量级并且高性能的文件系统,支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。
Union文件系统是 Docker 镜像的基础,镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
特性:
一次同时加载多个文件系统,从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录
Docker 镜像加载原理
docker 镜像实际是由一层一层的文件系统组成,这种层级的文件系统为UnionFS
bootfs(boot file system) 主要包含bootloader 和 kernel,bootloader 主要引导加载kernel,Linux 刚启动时会加载 Boofts 文件系统,在Docker 镜像的最底层是bootfs。
rootfs(root file system) 在bootfs之上,包含典形的 Linux 系统中的 /dev,/proc,/bin,/ect等标准目录和文件。rootfs 就是各种不同操作系统发行版,如CentOS,Ubuntu等。
这里centos只要209M
对于一个精简OS,rootfs可以很小,只包含最基本的命令、工具和程序库就可以,底层直接用Host的kernel(内核),自己只需提供rootfs 即可。由此可见对于不同Linux发行版,bootfs 基本一致,rootfs 有所差别,因此不同发行版也可以公用bootfs
分层
下载一个镜像时,查看输出日志,一层一层下载
好处:
可以资源共享
特点:
Docker 镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部。
这一层就是通常所说的容器层,容器之下的都叫镜像层
[root@localhost docker]# docker image inspect tomcat:9.0
如何提交一个自己的镜像
commit 镜像
docker commit 提交容器作为一个新的副本
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[Tag]
实战:
# 启动 默认tomcat
# 镜像源镜像 webapps 中没有文件,需要拷贝
# 操作过的容器 通过commit 提交为一个镜像, 之后可以使用这个修改过镜像
[root@localhost docker]# docker commit -a="antony" -m="add webapps app" bfb8aae1cd7c tomcat02:1.0
以上是关于Docker镜像 详细的主要内容,如果未能解决你的问题,请参考以下文章
Docker删除报错:Error response from daemon: conflict: unable to delete 08b152afcfae (must be forced)(代码片段