功能组件
docker客户端
docker daemon
docker容器
docker镜像
registry
--------------------------------------------------------------------------------------------
1.docker客户端
docker是一个典型的C/S架构的应用程序,在linux系统中,docker的客户端和服务端统一在一个二进制文件中,其它平台上,docker只提供了客户端,
docker客户端一般通过 docker command来发起请求,另外,也可以通过docker提供的一整套RESTfuk API来发起请求(一般应用在应用程序的代码中)
2.docker daemon
docker daemon是docker的主进程,也可以理解为 docker server,属于docker的核心,作用主要是用来接收docker客户端发来的请求,并实现请求所要求的功能,同时针对请求返回相应的结果。在功能的实现上,因为涉及了容器、镜像、存储等多方面的内容,daemon内部的机制会复杂很多,涉及了多个模块和实现交互
3.docker容器
在功能上,docker通过libcontainer来实现对容器生命周期的管理、信息的设置和查询,以及监控和通信等功能,而容器也是对镜像的完美诠释,容器以镜像为基础,同时又为镜像提供了一个标准的和隔离的执行环境,简单讲就是一个单独的运行环境
在概念上,docker容器就是“软件界的集装箱”,它可以安装任意的软件和库文件,做任意的运行环境配置。开发及运维人员在转移和部署应用的时间,不用关心容器里装了什么软件,也不用了解它们是如何配置的。而管理容器的docker引擎同样不用关心容器里的内容,它只要像码头工人一样让这个容器运行起来就可以了,容器不是一个新概念,但是docker在对容器进行封装后,与集装箱的概念对应起来,它之所以被称为“软件界的创新和革命”是因为它会改变软件的开发、部署形态、降低成本、提高效率。
4.docker镜像
容器提供了一个完整的、隔离的运行环境,那么镜像就相当于还没有启动的运行环境,相对于传统虚拟化镜像中的ISO镜像,docker镜像要轻量化很多,它只是一个可定制的rootfs,docker镜像的另一个创新是它是层级的并且是可复用的,在大多数文件的内容上都是一样的,基于此,当然会希望可以复用它们,而docker做到了。在此类应用场景中,利用unionfs的特性,docker会极大的减少磁盘和内存的开销。
docker镜像通常是通过dockerfile来创建的,dockerfile提供了镜像内容的定制,同时也体现了层级关系的建立。另外docker镜像也可以通过使用docker mommit这样的命令来手动将修改后的内容生成镜像
5.Registry
Registry是一个存放镜像的仓库,它通常被部署在互联网服务器或者云端,通常,集装箱需要通过邮轮经过海洋运输到世界各地。在镜像的传输过程中,Registry就是这个传输的重要中转站。加入我们的公司将一个软件的运行环境制作成镜像,并上传到Registry中,这时就可以很方便的在家中的笔记本上,或者在客户的生产环境上直接从Registry上下载并运行了,当然,对Registry的操作叶是与docker完美融合的,用户甚至不需要知道Registry的存在,只需要通过简单的命令就可以实现上面的操作,docker公司的官方Registry叫docker hub,这上面提供了大多数常用的软件和发行版的官方镜像,由于Registry本身属于一个开源项目,功能相对比较简单,所以一些企业会进行二次开发或者购买功能强大的企业版docker Hub
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端