当前位置: 首页 > news >正文

Docker(自写)

Docker

程序是跑在操作系统上的,而操作系统上又装了各种不同版本的依赖库和配置

程序依赖环境,环境不同,程序就可能跑不起来,如果我们能将环境和程序一起打包

docker就是可以将程序和环境一起打包并运行的工具软件

基础镜像

DockerFile

有了基础镜像还不够,我们经常还需要安装一些依赖

将要做的事情以命令行一行一行列出来,就像一份todo list

容器镜像

当执行docker build的时候,docker软件就会按dockerfile的说明,一行行构建环境加应用程序,最终将这个环境加程序打包成一个类似“压缩包”的东西,就是容器镜像Container Image,只要将容器镜像传到任意一台服务器上,对这个“压缩包”进行“解压缩”就能同时运行环境和程序

Registry

怎么将容器镜像传到那么多服务器呢

可以用docker registry负责管理镜像推拉能力的服务

容器是什么

在目的服务器用docker pull拿到容器镜像

执行docker run命令将这个类似压缩包的容器进行“解压缩”,获得一个独立的环境和应用程序并运行起来,这就是所谓的容器,可以在一个操作系统中,跑多个container,且都是互相独立

docker和虚拟机关系

docker的架构原理

典型的cs架构,

docker解析我们输入的command命令,然后调用docker daemon守护进程提供的restful API,守护进程收到命令后,会根据命令创建和管理各个容器

docker daemon内部分为docker server 和Engine

docker server本质上是个HTTP服务器,负责对外提供操作容器和镜像的API接口,接收到API请求后,会分发任务给Engine层,Engine层创建job,由job层实际执行各种工作,不同的docker命令执行不同的类型的job 任务

docker build

如果执行的是docker build命令,job则会根据dockerfile指令像剥洋葱皮似的一层层构建容器镜像文件

docker pull/push

job则会跟外部的docker registry交互,将镜像创建或下载

docker run

job就会基于镜像文件调用containierd组件,驱使runC组件创建和运行容器

docker compose是什么

docker容器本身只是一个特殊进程,但如果要部署多个容器,且对容器的顺序有一定要求。比如一个博客系统,当然是先启动数据库再启动身份验证服务,最后才能启动博客web服务。按理说挨个执行docker run 命令当然是没有问题的,可以通过一个yaml文件写清除要部署的容器有哪些,部署顺序是怎么样的,以及这些容器占用cpu和内存等信息,然后通过docker-compose up命令开始解析yaml文件,将容器门一键按顺序部署,就完成一整套服务的部署

docker swarm是什么

docker解决的一个容器的部署

docker compose 解决的是多个容器组成的一整套服务的部署

docker swarm 是解决一整套服务再多台服务器上的集群部署问题,比如某应用在a服务器坏了,就将该服务在b服务器上重写部署一套,实现迁移,还能根据需要对引用做扩缩容

docker 和k8s

k8s会在多台node的服务器上调度pod进行部署和扩缩容,每个pod内部可以含有多个container,每个container本质上就是一个服务进程

http://www.dtcms.com/a/357942.html

相关文章:

  • Netty 心跳与链路保活机制详解:保证高并发环境下的稳定连接
  • Web 聊天室消息加解密方案详解
  • Java面试-spring boot框架
  • 音视频学习(六十):H264中的PPS
  • 【C语言】字符函数与字符串函数实战:用法原理 + 模拟实现
  • VMware 设置 Ubuntu 虚拟机桥接模式完整教程
  • 音视频学习(六十二):H264中的SEI
  • 【Qt开发】按钮类控件(一)-> QPushButton
  • Ethan独立开发新品速递 | 2025-08-30
  • 【读书笔记】《最好的告别》
  • Git 安装与国内加速(配置 SSH Key + 镜像克隆)
  • 系统质量属性
  • 【瑞吉外卖】手机号验证码登录(用QQ邮件发送代替)
  • wpf之附加属性
  • 学习嵌入式第四十一天
  • 【电力电子】MCP602运算放大器测交流电压(120VAC/230VAC),带直流偏置2.5V,比例:133.5:1
  • 【杂谈】-混沌理论能否赋予机器差异化思考能力?
  • 华为 HarmonyOS 代表未来
  • 初学者如何学习项目管理
  • Citrix 零日漏洞自五月起遭积极利用
  • 爱普生L3255打印机故障记录
  • Pregel 与 LangGraph:从分布式图计算到现代 AI 智能体的架构演进与 API 深度解析
  • 多教师语言感知知识蒸馏:提升多语种语音情绪识别的新方法
  • 区块链存证技术:如何让电子证据成为“铁证
  • HarmonyOS应用的多Module设计机制:构建灵活高效的应用程序
  • IPv6过渡技术6VPE
  • Kotlin Android 水印功能实现指南:使用 Watermark 库
  • java agent 字节码增强demo实现,无修改增强服务
  • 从零开始的python学习——注释与运算符
  • Codeforces Round 1033 (Div. 2) and CodeNite 2025 vp补题