论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
SQL-Server
›
【docker】docker的劈头与容器的由来、docker容器的隔离 ...
【docker】docker的劈头与容器的由来、docker容器的隔离机制 ...
缠丝猫
论坛元老
|
2024-11-29 16:16:09
|
显示全部楼层
|
阅读模式
楼主
主题
1006
|
帖子
1006
|
积分
3018
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
Docker 的劈头与容器的由来
1.
捏造机的范围:容器的需求萌芽
在 Docker 出现之前,开发和部署软件重要依赖
捏造机
(VMs):
捏造机通过模仿硬件运行操作系统,每个应用步调可以运行在自己的独立环境中。
虽然捏造机办理了隔离问题,但它们的缺点也很明显:
占用资源多
:每个捏造机必要运行一个完整的操作系统,占用大量内存和存储。
启动慢
:启动捏造机往往必要几分钟,影响开发和测试效率。
部署繁琐
:跨环境迁移应用时,环境差异容易引发问题。
这些问题推动了对更轻量级、快速启动、隔离性强的办理方案的需求,
容器技能
由此诞生。
2.
容器技能的前身
容器的概念并非 Docker 发明,而是基于 Linux 系统的已有技能演变而来:
2001年:Chroot 环境
Linux 的 chroot 技能可以改变进程的根文件系统,让进程只看到特定的目录。虽然简单,但它的隔离能力有限。
2008年:LXC 容器技能
Linux 开始支持
Linux Containers (LXC)
,基于 cgroups 和 namespace 提供了资源控制和进程隔离的能力。这是容器的雏形,但 LXC 的操作复杂,开发者使用门槛较高。
3.
Docker 的诞生
2013年:Docker 横空出世
一个名为 DotCloud 的创业公司开发了 Docker,目的是简化容器的使用:
基于 LXC 技能
:早期的 Docker 使用 LXC 容器技能。
易用性
:Docker 提供简单的命令行工具和友爱的 API,让开发者轻松使用容器。
镜像理念
:Docker 引入了轻量级、可移植的镜像,将应用步调及其运行环境封装到一个标准化的包中,方便跨环境部署。
随着 Docker 的发展,它逐步替换 LXC,构建了自己的容器引擎
libcontainer
,进一步增强性能和隔离性。
Docker 容器的隔离机制
容器的核心理念是
隔离
:让每个容器看起来像是独立运行的“微型计算机”。Docker 使用 Linux 的内核功能实现这一点,重要依赖以下两大机制:
1.
Namespace:命名空间(隔离视图)
Namespace 提供进程的
视图隔离
,每个容器有自己的“世界”,看不到其他容器或宿主机的资源。
进程隔离(PID Namespace)
每个容器有自己的进程树,容器内部的进程只能看到自己的进程,无法干扰宿主机或其他容器的进程。
文件系统隔离(Mount Namespace)
容器内有独立的文件系统,依赖 Docker 镜像加载。容器只能访问分配给它的文件系统部分。
网络隔离(Net Namespace)
每个容器有自己的捏造网卡和 IP 地址,容器之间、容器与宿主机之间的网络通讯通过桥接或 NAT 控制。
用户隔离(User Namespace)
容器内的用户和宿主机的用户隔离,比方容器内的 root 用户并不是真正的宿主机 root。
2.
Cgroups:控制组(资源限定)
Cgroups 提供进程的
资源限定
,防止某个容器耗尽系统资源。
CPU 限定
:限定单个容器的 CPU 使用率,确保多个容器公平共享 CPU。
内存限定
:为容器分配固定内存,防止内存走漏影响宿主机或其他容器。
I/O 限定
:限定容器的磁盘读写速率,避免某些高 I/O 的容器影响整体性能。
3.
UnionFS:分层文件系统
Docker 使用分层文件系统(如 AUFS、OverlayFS)管理镜像和容器的文件:
镜像分层
:Docker 镜像由多层组成,每层存储变化部分。
写时复制
:容器启动时创建一个可写层,全部对文件的修改只影响这一层,不改变原始镜像。
这种设计让镜像可以高效复用和快速构建,同时镌汰存储占用。
生动比喻
捏造机 vs 容器
捏造机就像是一栋栋独立的房子,每栋房子必要自己的地基(硬件),而且盖起来很耗时。
容器就像是公寓中的单元,全部单元共用同一个地基(宿主机的内核),但每个单元都有自己的门、窗、墙壁,住户互不干扰。
隔离机制的比喻
Namespace
就像每个单元的“视野”:单元内的住户只能看到自己的房间,看不到其他单元的情况。
Cgroups
就像物业对每个单元的资源限定:每户用电、用水有配额,超出了就会被限定。
UnionFS
就像一个多层的建筑结构:底层是固定的(镜像层),住户只在顶层装修(容器层),不会破坏建筑结构。
总结
Docker 是为了办理捏造机的资源开销和环境迁移问题而生的,它通过 Linux 的 Namespace 和 Cgroups 实现隔离,通过 UnionFS 提高文件管理效率。这种轻量级的捏造化方式彻底改变了当代应用的开发、测试和部署方式,为容器化技能奠定了底子。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
缠丝猫
论坛元老
这个人很懒什么都没写!
楼主热帖
【设置ssh免密不起作用?彻底搞懂密钥 ...
关于Servlet的补充知识
kubernetes之镜像拉取策略ImagePullSec ...
MySQL 8.0 新特性梳理汇总
【云原生】Docker 进阶 -- 构建自定义 ...
java如何编写增强for循环呢? ...
基于C#+unity的2D跑酷闯关对战冒险游戏 ...
常见开发模型-敏捷开发与瀑布开发模型 ...
在chatGPT的帮助下成功从Rancher中删除 ...
超融合技术入门:怎样轻松把握这一技术 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
Nosql
Mysql
快速回复
返回顶部
返回列表