深化Docker工具的认识

之前因为最开始,考虑到大家对docker虚拟化的了解不多,所以前面博客,对docker的描述很浅显,而且很简单,只是谈了一下它的特性和它的用途,现在我们对docker有了一定的运用和实战了解,故本篇博客旨在对docker原理进行深入剖析!

一、Docker引擎架构

docker引擎是一个C/S结构的应用,组件如图所示:
在这里插入图片描述Server端是一个常驻进程,注意服务端就是一个进程而已,并不是服务器!
REST API 实现了client和server间的交互协议;
docker CLI(docker命令行) 实现容器和镜像的管理,为用户提供统一的操作界面。
Docker使用C/S架构,Client 通过接口与Server进程通信实现容器的构建,运行和发布。client和server可以运行在同一台集群,也可以通过跨主机实现远程通信,架构如图所示:
在这里插入图片描述注:Docker守护进程(服务端)实现了静态向动态的转变。

二、Docker镜像原理

一个完整的Docker镜像可以支撑一个Docker容器的运行,在Docker容器运行过程中主要提供文件系统数据支撑。
Docker镜像作为docker中最基本的概念,有以下几个特性:

  • 镜像分层,每个镜像都由一个或多个镜像层组成;
  • 可通过在某个镜像加上一定的镜像层得到新镜像(此过程可通过编写dockerfile或基于容器Commit实现);
  • 每个镜像层拥有唯一镜像ID;
  • 镜像在存储和使用时共享相同的镜像层(根据ID),所以在pull镜像时,已有的镜像层会自动跳过下载;
  • 每个镜像层都是只读,即使启动成容器,也无法对其真正的修改,修改只会作用于最上层的容器层;

在这里插入图片描述最下面的镜像层:只能读,不能写,不能改动,一个命令算一层,尽量减少镜像层数

Init Layer(RO):初始化层,这一层主要是复用部分宿主机的配置文件,比如:resolv.conf,启动docker容器时会进入这一层。

Read_write Layer(RW):读写层(容器层),这一层当你进入docker容器的终端时,就处于这一层,且在这一层你做的所有修改都不会影响镜像,修改只对容器层起作用!

发布了188 篇原创文章 · 获赞 150 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_44571270/article/details/104461224