docker概念
Docker核心概念
为什么使用docker
传统服务器部署存在以下问题
1、上线流程繁琐
开发->测试->申请资源->审批->部署->测试等环节
2、资源利用率低
普遍服务器利用率低造成过多浪费,导致成本过高
3、扩容/缩容不及时
业务高峰期扩容流程繁琐,上线不及时
已知业务增长——提前申请
未知业务增长——业务机增加承载量(约30%左右)
4、服务器环境臃肿
服务器越来越臃肿,对维护、迁移带来困难(为提高服务器利用率,多个项目在同一台服务器中)
5、环境不一致性
扩容的机器与现有机器容易存在差异化
Docker是什么
使用最广泛的开源容器引起
一种操作系统级的虚拟化技术
依赖于Linux内核特性:Namespace(资源隔离)和Cgroups(资源限制)
一个简单的应用程序打包工具
Docker设计目标
提供简单的应用程序打包工具
开发人员和运维人员的职责逻辑分离(节省运维人员成本,持续发布有问题可以更快的解决)
开发人员职责:
开发项目
打包项目环境+代码成镜像
部署到容器平台
运维人员职责:怎么高效的去管理容器,
多环境保持一致性
Docker基本组成
由docker客户端、守护进程、镜像仓库组成
容器与虚拟机之间的区别
图析:
VM(虚拟机) | Container(容器) |
---|---|
Computer Hardware(计算机硬件) | Computer Hardware(计算机硬件) |
Host OS(主机系统/宿主机) | Host OS(主机系统/宿主机) |
Hypervisor(运行物理机与操作系统之间的软件层-虚拟化核心,将虚拟出的虚拟机隔离) | Docker Engine(Docker引擎) |
Guest OS(创建的虚拟机) | APP(使用Docker引擎运行在主机系统——线程隔离) |
APP(虚拟机上运行的虚拟机,系统级隔离) |
差异:
Contaier(容器) | VM(虚拟机) | |
---|---|---|
启动速度 | 秒级 | 分钟级 |
运行性能 | 接近原生(将进程封装——逻辑隔离) | 分钟级 |
磁盘占用 | MB | GB |
数量 | 成百上千 | 一般几十台 |
隔离性 | 进程级 | 系统级(更彻底) |
操作系统 | 主要支持linux | 几乎所有 |
封装程度 | 只打包项目代码和依赖关系,共享主机内核 | 完整的操作系统 |
容器解决的问题:
1.容器提供一个基本独立的环境,实现容器隔离,资源限制
2.主要解决应用层面问题,应用快速部署、高效管理
虚拟机:
1.提升服务器资源利用率
2.提供一个完全隔离的环境
Docker应用场景
应用程序打包处理和发布
应用程序隔离
持续集成
部署微服务(微服务升级不会影响整体系统)
快速搭建测试环境
提供PaaS产品(平台即服务)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)