Docker镜像 详细

Posted CSR-kkk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker镜像 详细相关的知识,希望对你有一定的参考价值。

Docker 镜像

镜像
镜像是一种轻量级、可执行的独立软件包,用于打包 软件运行环境 和 基于环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。

获取镜像途径:

  1. 远程仓库下载
  2. 拷贝
  3. 自己制作 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的安装与删除(极其详细,有图有代码)

Docker删除报错:Error response from daemon: conflict: unable to delete 08b152afcfae (must be forced)(代码片段

云原生Docker镜像详细讲解

Docker 镜像详细讲解

03-5 docker镜像管理之查看镜像的详细信息

Docker images详细介绍及管理制作镜像