Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Docker容器的本质

Docker容器的本质

作者头像
加多
发布于 2023-03-23 02:40:01
发布于 2023-03-23 02:40:01
3750
举报
文章被收录于专栏:Java编程技术Java编程技术

image.png

先说结论:Docker容器的本质是一个特殊的进程。

学过操作系统的大家应该知道进程其实是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。

比如我们电脑上运行的微信程序是一个进程,运行的开发工具(intellj idea)也是一个进程。其实在操作系统视角来看,处于运行时的Docker容器本身也是一个进程,只是这个进程比较特殊,下面我们就来说说他特殊在哪里

针对Linux容器来说,为了实现容器间资源隔离与限制,其对容器进程做了下面的处理

  • 第一:其使用Linux提供的NameSpace技术来修改Docker容器进行时视图,实现每个容器有相互隔离的网络命名空间、进程空间等;比如你在Docker容器内查看进程列表,会发现容器自身是1号进程,其并看不到操作系统视角的其他进程,比如每个docker容器看到的都是各自独立的文件系统,相互之间不会影响。
  • 第二:使用Linux提供的NameSpace技术仅仅解决了容器之间的隔离问题,但是还是没法控制每个容器对资源使用的限制问题,比如还是无法控制每个容器可以使用多少cpu和内存等资源。所以还需要使用Linux的Cgroup技术来实现容器对资源使用的限制。Linux Cgroups 的全称是 Linux Control Group。它最主要的作用,就是限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等。

总结:针对Linux内核的容器,比如Docker容器来说,其本质是一个特殊的进程。相比其他进程其特殊在基于NameSpace技术实现了进程的视图的隔离,基于Cgroup技术实现了资源使用的限制,从而实现了容器之间的资源隔离与限制。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Docker容器实战(六) - 容器的隔离与限制
Linux容器中用来实现“隔离”的技术手段:Namespace。 Namespace实际上修改了应用进程看待整个计算机“视图”,即它的“视线”被操作系统做了限制,只能“看到”某些指定的内容。对于宿主机来说,这些被“隔离”了的进程跟其他进程并没有区别。
JavaEdge
2019/10/08
1.4K0
Docker容器实战(六) - 容器的隔离与限制
Docker容器实战(六) - Docker是如何实现隔离的?
Linux 命名空间对全局操作系统资源进行了抽象,对于命名空间内的进程来说,他们拥有独立的资源实例,在命名空间内部的进程可以实现资源可见。 对于命名空间外部的进程,则不可见,实现了资源的隔离。这种技术广泛的应用于容器技术里。
JavaEdge
2021/02/22
1.8K0
Docker容器实战(六) - Docker是如何实现隔离的?
Docker 底层原理浅析
作者:vitovzhong,腾讯 TEG 应用开发工程师 容器的实质是进程,与宿主机上的其他进程是共用一个内核,但与直接在宿主机执行的进程不同,容器进程运行在属于自己的独立的命名空间。命名空间隔离了进程间的资源,使得 a,b 进程可以看到 S 资源,而 c 进程看不到。 1.  演进 对于统一开发、测试、生产环境的渴望,要远远早于 docker 的出现。我们先来了解一下在 docker 之前出现过哪些解决方案。 1.1 vagrant Vagarant 是笔者最早接触到的一个解决环境配置不统一的技术方
腾讯技术工程官方号
2020/11/05
1.9K0
白话容器基础(二):隔离与限制
在上一篇文章中,我详细介绍了 Linux 容器中用来实现“隔离”的技术手段:Namespace。而通过这些讲解,你应该能够明白,Namespace 技术实际上修改了应用进程看待整个计算机“视图”,即它的“视线”被操作系统做了限制,只能“看到”某些指定的内容。但对于宿主机来说,这些被“隔离”了的进程跟其他进程并没有太大区别。
yuanshuai
2022/08/17
5350
白话容器基础(二):隔离与限制
大厂都在玩的容器技术到底是什么?
著名杂志《经济学人》曾经评价“没有集装箱,就没有全球化”,可以说集装箱的出现重塑了现代货运体系,实现了交通运输行业的标准化,有效降低物流运输成本,极大提升了货物转运效率。而在云原生领域,容器就相当于集装箱,它使得软件发布以及软件运行隔离实现标准化,引领了云原生基础设施的跨越式发展。从某种意义上来说,容器技术重塑了整个软件供应链。今天就和大家聊聊各个大厂都在玩的容器技术到底是什么。
慕枫技术笔记
2023/03/20
3270
大厂都在玩的容器技术到底是什么?
容器技术基础
容器本身没有价值,有价值的是“容器编排” 一旦“程序”被执行起来,它就从磁盘上的二进制文件,变成了计算机内存中的数据、寄存器里的值、堆栈中的指令、被打开的文件,以及各种设备的状态信息的一个集合。像这样一个程序运行起来后的计算机执行环境的总和,就是我们今天的主角:进程。 容器技术核心功能,就是通过约束和修改进程的动态表现,从而为其创造出一个“边界”
Dlimeng
2023/06/30
2280
容器技术基础
Alan的Docker容器学习笔记
(本文的内容主要来源于Google、百科和学过的一些专栏,目前没有实际的企业级应用容器化部署经验,写的比较浅薄见笑了)
程序员Alan
2023/01/13
5070
Docker与k8s的恩怨情仇(二)—用最简单的技术实现“容器”
上次我们说到PaaS的发展历史,从Cloud Foundry黯然退场,到Docker加冕,正是Docker“一点点”的改进,掀起了一场蝴蝶效应,煽动了整个PaaS开源项目市场风起云涌。
葡萄城控件
2021/06/29
5930
并非每个容器内部都能包含一个操作系统
很容易可以辨别出,图一docker引擎画在了应用底部,类似于虚拟机的位置,docker虚拟化技术替代了虚拟机,更轻量级,看上去更容易理解和接受;
用户5166556
2020/11/05
1.2K0
并非每个容器内部都能包含一个操作系统
Docker操作实践(1):容器的本质是什么?容器从何而来?
容器本质上是一种进程隔离的技术。容器为进程提供了一个隔离的环境,容器内的进程无法访问容器外的进程。
嘉为蓝鲸
2019/09/25
2.2K0
Docker操作实践(1):容器的本质是什么?容器从何而来?
【K8S专栏】Docker容器技术剖析
由于Docker的诞生,带动了容器技术的大火,以至于后面很多时候说的容器都指向Docker,其实除了Docker,还有许多其他的容器技术,比如RKT,LXC,Podman等。
没有故事的陈师傅
2022/09/15
6970
【K8S专栏】Docker容器技术剖析
细说docker - 容器技术
docker对于现在的我们来说,已经是一个非常熟悉的东西了,docker无论是在部署打包,自动化,等方方面面都起着重要的作用,但是你是否有疑问,docker究竟是如何帮我们创建一个个隔离的环境的呢?今天我们就来看看,仔细说说docker
LinkinStar
2022/09/01
5900
细说docker - 容器技术
docker底层原理介绍
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
用户1205080
2018/09/12
2.9K0
docker底层原理介绍
现在最火的容器技术到底是怎么实现的?
通俗的来说容器其实是一种沙盒技术。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去。不过,这两个能力说起来简单,但要用技术手段去实现它们,确并不是很容易。所以,本篇文章就来剖析一下容器的实现方式
Java学习录
2019/07/10
9300
现在最火的容器技术到底是怎么实现的?
浅谈容器技术
总结为八个字:一次打包,随处运行。就是开发者将应用程序及其所有依赖项(如库、配置文件等)打包到一个容器中,并在任何支持容器技术的环境中运行,无需担心底层操作系统的差异。
希里安
2023/10/30
2990
浅谈容器技术
微服务架构之「 容器技术 」
现在一聊到容器技术,大家就默认是指 Docker 了。但事实上,在 Docker 出现之前,PaaS社区早就有容器技术了,以 Cloud Foundry、OpenShift 为代表的就是当时的主流。
奎哥
2019/07/13
5830
容器系列1: docker的底层技术和快速实践
有一天,小张碰到了老李,他想向老李请教有关Docker的知识。于是,小张走向老李并问道:“老李,我听说你懂得很多关于Docker的知识,请问你能否给我讲讲Docker的基本结构和组件?”
李福春
2025/07/01
810
容器系列1: docker的底层技术和快速实践
容器底层-Cgroups 的使用
Linux Cgroups(Linux Control Group)是 Linux 内核中用来为进程设置资源限制的一个功能。它最主要的作用就是限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等。此外,Cgroups 还能够对进程进行优先级设置、审计,以及将进程挂起和恢复等操作。
syy
2020/12/17
1.1K0
容器底层-Cgroups 的使用
容器的概念
容器其实就是一种沙盒技术,作为一个“盒子”可以把应用装起来,使得各个应用之间不相互干扰,并且被装进“盒子”的应用,可以很方便地搬来搬去。
月梦@剑心
2023/03/31
3910
容器化技术与Docker核心原理
- 命名空间是Linux内核的一项功能,它允许将全局资源(如网络接口、进程ID空间、文件系统层次结构、用户ID和组ID等)进行隔离,为容器内的进程创造了一个独立的视图。这意味着每个容器看到的是自己的一套独立资源,不会与宿主机或其他容器中的资源混淆,实现了环境的隔离。
用户7353950
2024/05/20
2140
容器化技术与Docker核心原理
相关推荐
Docker容器实战(六) - 容器的隔离与限制
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档