概述
docker的核心组件如下:
1、 客户端:dockerclient
2、 服务端:dockerserver
3、 Docker镜像
4、 Registry
5、 Docker 容器
1、 docker客户端与服务器
docker client向docker daemon发送请求,docker daemon完成相应的任务,并把结果返还给容器.
docker client是一个泛称,它可以是命令行docker,也可以是遵循了docker api规则的客户端,简单地说可以理解为一个用于交互/发送指令的接口。
2、 docker镜像
docker镜像是一个只读的模板,是启动一个容器的基础。其中包括了容器的文件系统结构与内容,它与docker的配置文件共同组成了docker容器的静态文件系统环境
docker镜像在设计上有许多特别之处:
1) 分层机制
docker的镜像机制是有层次感的,一个镜像可以放到另一个镜像的顶部。位于下端的为父镜像,以此类推;最底部的镜像可称为基础镜像。最后从一个镜像启动容器时,docker会在镜像的最顶层加载一个读写的文件系统,我们想在docker上运行的程序就是在这个读写层中执行的。
当我启动容器之后,我们接触的是最顶层的可写容器,最顶层的镜像根据他下层的镜像迭代构建而成。接下来引出docker镜像的另一个特性,写时复制:
2) 写时复制
还是看刚刚那张图,刚开始运行的时候可写容器与顶层的镜像内容是完全一致的;当我对内容进行修改的时候,文件会从下一层的镜像(只读层)复制到顶层的可写容器(读写层),只读层的文件依然存在,但是会被读写层的文件所隐藏;在容器中所做的所有操作,都不会影响底层的原有数据,除非你把他打包成一个新的镜像。
3) 内容寻址与联合挂载
内容寻址:根据文件的内容来索引镜像和镜像层。
与之前版本对每个镜像层随机生成一个 UUID 不同,新模型对镜像层的内容计算校验,生成一个内容哈希值,并以此哈希值代替之前的 UUID 作为镜像层的唯一标识。
该机制主要提高了镜像的安全性,并在 docker pull、docker push、docker load 和 docker save 操作后检测数据的完整性。
另外,基于内容哈希来索引镜像层,在一定程度上减少了 ID 的冲突并且增强了镜像层的共享。对于来自不同构建的镜像层,主要拥有相同的内容哈希,也能被不同的镜像共享。
联合挂壁:联合挂载技术可以在一个挂载点同时挂载多个文件系统,将挂载点的原目录与被挂载内容进行整合,使得最终可见的文件系统将会包含整合之后的各层的文件和目录。实现这种联合挂载技术的文件系统通常被称为联合文件系统
3、 registry
我们从何处去获得镜像?如果我们是第一次通过某个镜像去启动容器,首先宿主机回去/var/lib/docker目录下去找,如果没有找到,则会去registry中去下载镜像并且存放于虚拟机,然后完成启动。
registry可以想象为一个镜像的仓库,默认的registry是docker官方提供的registry服务,名为Docker Hub。当然,你也可以构建自己的镜像仓库。
4、 docker容器
容器就是镜像的运行实例。
用户可以通过命令行或是 API 启动、停止、移动或删除容器。可以这么认为,对于应用软件,镜像是软件生命周期的构建和打包阶段,而容器则是启动和运行阶段。
最后
以上就是开心白开水为你收集整理的Docker组件的全部内容,希望文章能够帮你解决Docker组件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复