Docker几个概念

news2025/1/23 17:29:00

Docker几个概念,有不正确地方欢迎指正

一、首先来看一句话:没有Cgroups就没有LXC,没有LXC就没有Docker。

1、什么是Cgroup呢?Cgroup又名Control group,是Linux内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(CPU、 Memory、IO、NET)的机制。

可以看出来,Cgroup是Linux内核里的一个解决方案。其提供的机制非常符合Docker,Docker容器本身也是一种隔离

2、什么是LXC呢?LXC又名Linux Container,是Linux系统上的一个容器技术,是基于内核级的虚拟化技术,可以使Linux操作系统软件服务进程能够相互独立,控制每个服务进程的CPU,内存资源。但这个对于Docker来讲还不够,Docker是在LXC技术上进一步的封装,比LXC技术更完善,并且提供了一系列完整的功能

LXC包含了Cgroups,NameSapce等等,并通过Cgroup进行资源管理

从管理结构体系看,Cgroup在最底层,LXC在Cgroup上封装一层,Docker又在LXC封装一层。

 二、什么是AUFS

从上图看出来,Docker包含了LXC和AUFS,那什么是AUFS呢?

AUFS是早期Docker使用的文件系统,Aufs是一种层次结构的文件系统,每当修改时,会拷贝一层为可写层做修改,如果文件大,效果会很低。

下图所示为一个完整的容器文件层级结构

1、什么是Bootsfs?

Linux文件系统由Boofts和Rootfs两部分组成

Bootfs(boot file system)主要包含 bootloader和kernel。Bootloader主要是引导加载kernel,当kernel被加载到内存中后 bootfs就被umount,Rootfs (root file system) 包含的就是典型 Linux 系统中的/dev,/proc,/bin,/etc等目录和文件。系统引导时,Rootfs是只读的,当系统自检完成后,Rootfs才会变更为可写。

 2、什么是Base Imag和Image

容器镜像文件都是层级堆叠的,可以把每一层看作一起应用服务。

3、根据AUFS系统原理,容器需要写入内容,每层为只读的,为了能够用来写入,在容器最顶层writeable Container写入层。把需要修改的层拷贝到这里来做修改。这种修改机制造成Aufs效果低下。

AUFS因为没有加入到内核,使用上性能又不足,考虑到兼容问题,Docker已经对AUFS放弃了

Docker支持文件系统有很多,如AUFS,Btrfs、Device mapper、OverlayFS,ZFS,VFS等等,目前主流使用的是OverlayFS

三、什么是OverlayFS

OverlayFS是目前使用比较广泛的层次文件系统,是一种类似Aufs的一种堆叠文件系统,于2014年正式合入Linux 3.18主线内核,OverlayFS文件系统,实现简单,而且性能很好,可以充分利用不同或相同Overlay文件系统的Page Cache,具有:上下合并、同名遮盖、写时拷贝等特点。

Docker存储驱动利用了很多OverlayFS特性来构建和管理镜像与容器的磁盘结构。OverlayFs加入内核,在内核模块中的名称也从Overlayfs变为Overlay。但实际使用中,overlayfs代表整个文件系统,overlay表示Docker的存储驱动。

 Dpper Dir,上层目录。Lower Dir下层目录,Merged对外提供视图。

Lower Dir层只读,如果需要修改文件,需要把文件从Lower Dir层复制到可写的Upper Dir层。修改完成后,其结果也会被保留到Upper Dir层。

在Docker中 ,只读层为image,可写的层是Container。Docker镜像中的每一层,其实对应的是/varlib/docker/overlay/overlay2中的一个文件夹,文件夹以该层的UUID命名,如下图。

[root@localhost ~]# ls /var/lib/docker/overlay2/
backingFsBlockDev  l
[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
f1f26f570256: Pull complete 
7f7f30930c6b: Pull complete 
2836b727df80: Pull complete 
e1eeb0f1c06b: Pull complete 
86b2457cc2b0: Pull complete 
9862f2ee2e8c: Pull complete 
Digest: sha256:dbf632af6963e56f6b3fc4196578b75742482490c236f5009b3e68cf93a62997
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    080ed0ed8312   2 weeks ago   142MB
[root@localhost ~]# ls /var/lib/docker/overlay2/
124de18ac679debed8fad498e3c0ea285e84751b6c98e10afd64b22708856821  14e1318ee77934bcc00eb04177d8d53d11ba4063b055a6c5e48d91fa3468c88f  9b318696a784bdd69e2c47ae2c0cdf1a9d542919b63e0b4d99007351f9e7bc3a  backingFsBlockDev
133c407321616f4451df01043ab6e987400f402ef6d1305df5390df538d5d2d9  45812d55a14f0a4c7410aea41871e35c60262093e4641a117158456c4ab0d21e  abef3738390c7a91ddde9db868b2db4bc6f861d74c7cedbee55b71bc6355518f  l
[root@localhost ~]# 

四、Docker引擎架构

Docker是一个C/S架构,Server常驻进程,Server和Client通过REST API交互,CLI实现容器和镜像的管理,为用户提供统一操作界面。

五、Docker镜像,容器,仓库

Docker镜像包含各种软件,每个软件用户服务分层存放于一个镜像中,Docker镜像只读,不能对其进行写操作

Docker容器,是Docker镜像的实例。其底层是Docker镜像,基于镜像运行。可以理解为在镜像层添加一个容器层后的实休。

Docker仓库,用于存放管理Docker镜像地方,分来公共仓库和私有仓库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/413867.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VLAN 基础与划分及配置

我们都知道 VLAN 的中文名为"虚拟局域网",VLAN 是一种将局域网设备从逻辑上划分成一个个不同的网段,从而实现虚拟工作组的新兴数据交换技术。这一新兴技术主要应用于交换机和路由器中,但主流应用还是在交换机之中。那今天咱们就和海…

Linux网络连接出现问题

报错截图 1.先查看NetworkManager是否启动 systemctl status NetworkManager如果输出结果中包含 "active (running)" 表示 NetworkManager 已经启动并正在运行 2.查看DNS是否配置 cat vim /etc/resolv.conf 1.查看是否有配置信息,如果没有请配置DNS …

华为ACL配置

模拟场景 服务器:192.168.3.100 销售部:192.168.1.1 开发部:192.168.2.1 模拟互联网:1.1.1.1 要求1:销售部不允许访问服务器 要求2:开发部可以访问服务器 要求3:互联网不可以访问服务器 拓扑图…

栈和队列经典题题解

目录 🍉一.括号匹配问题🍉 🍈二.用队列实现栈🍈 🍏三.用栈实现队列🍏 🍓四.设计循环队列🍓 🍉一.括号匹配问题🍉 OJ链接力扣 题目描述: 思路&…

77-Linux_网络编程

网络编程一.主机字节序列和网络字节序列二.套接字地址结构1.通用socket地址结构2.专用的socket地址结构3.IP地址转换函数一.主机字节序列和网络字节序列 主机字节序列分为大端字节序和小端字节序,不同的主机采用的字节序列可能不同。 大端字节序是指一个整数的高位…

开店必备的5款超实用零售管理软件,第1个新手也能轻松使用!

现在越来越多的零售店老板都开始用零售管理软件来管理门店,提升效率,节约人力和时间成本。 但对于刚刚接触零售管理软件的老板来说,应用市场上的零售管理软件那么多,究竟哪些好用,哪些容易上手……还不太了解。 别着急…

CMake项目使用ctest+gtest进行单元测试

随着CMake工具越来越强大便捷,越来越多的C/C项目转而使用CMake来进行编译管理,它还提供了用于测试的ctest命令来执行项目中编写的单元测试。 本文就以一个实例来介绍如何使用ctest来进行单元测试。 一、环境准备 本文实例环境VSCodeMinGW64CMakegtest…

Qt程序CPU过高怎么定位解决?性能优化

自己开发的一个程序采用多线程调用url从网络上下载股票数据,一旦开启程序就特别的卡;想着优化一下;授之于鱼,不如 授之以渔; 1.CPU过高排查方法 (1)打开vs的性能探测器; &#xff…

Android端推送消息之极光推送

推送方式 轮询 --实现方式: 周期性主动获取网络中的数据; --缺点: 费电, 费流量; SMS --实现方式: 服务器端向手机端发送短信, 手机监听短信广播, 将拦截的短信信息进行显示; --优点: 省电, 省流量, 在没有网络的偏远地点也能接收到推送消息; --缺点: 费钱, 一毛钱一条;…

国产BI厂商:数字化时代的“卖水人”,扎根本土商业生态(上)

“没有数据,就没有竞争力。”随着中国经济以数字经济为重要引擎转向高质量发展道路,数据已成为推动经济增长的关键要素。Navesink顾问公司的创始人Thomas Redman认为,企业需要建立起对数据的组织和处理能力,只有这样才能收获大数据…

前端常用vscode插件

打开vscode配置 commandshiftP 选择Open User Setting(首选项:打开用户设置(JSON)) 1 Prettier - Code formatter "[javascript]": {"editor.defaultFormatter": "esbenp.prettier-vscode"},"[typescri…

日常记录:天梯赛练习集L1-043 阅览室

题目: 天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员…

信安大佬真的用kali吗?

Kali只是现在网络安全和kali比较火的一个操作系统 下面我为大家讲讲kali系统都有那些优点 Kali介绍Kali Linux是基于Debian的Linux发行版, 设计用于数字取证操作系统。面向专业的渗透测试和安全审计。 集成化:预装超过300个渗透测试工具兼容好&#x…

【你听说了吗】GPT-5据说已经学完了世界上现存所有的视频

文章目录前言一、GPT-5会带来什么?二、我们该怎么办?总结前言 最近半年要说最火的产品,无疑是ChatGPT ,很多同学都在用 GPT 帮助自己工作,学习,提高效率!尤其是 GPT4,性能强 GPT3.5…

鸟哥的Linux私房菜 学习 Shell Scripts

第十三章、学习 Shell Scripts 重点回顾 shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文字档,将一些 shell 的语法与命令(含外部命令)写在里面, 搭配正规表示法、管线命令与数据流重导向等功能&#xf…

代码随想录算法训练营第五十三天 | 1143.最长公共子序列、1035.不相交的线、 53. 最大子序和 动态规划

打卡第53天 今日任务 1143.最长公共子序列 1035.不相交的线 53.最大子序和 动态规划 1143.最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这…

i.MX6ULL 开发板-Mqtt 移植

转载:http://e.betheme.net/article/show-149636.html?actiononClick PS: 订阅主题,命令如下: mosquitto_sub -h localhost -t "mqtt" -v 发布主题,命令如下: mosquitto_pub -h localhost -…

96年阿里P7晒出工资单:狠补了这个,真香...

最近一哥们跟我聊天装逼,说他最近从阿里跳槽了,我问他跳出来拿了多少?哥们表示很得意,说跳槽到新公司一个月后发了工资,月入5万多,表示很满足!这样的高薪资着实让人羡慕,我猜这是税后…

使用qt调用c#编写的dll库

问题背景 我需要使用qt编写界面程序来操作设备,设备厂家提供了一个使用C#编写的dll库,里面包含了各种操作设备的函数。而我不想学习C#,使用C来调用dll库的话,不论是显示调用(提供h文件,dll文件&#xff09…

【操作系统复习】第4章 进程同步

进程同步的概念 主要任务 ➢ 使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。 进程间的制约关系 ➢ 间接相互制约关系(互斥关系) • 进程互斥使用临界资源 ➢ 直接相互制约关系(同步关系) •…