Docker的理解
Docker的理解
- Docker
- 为什么用Docker?
- 1.提升系统资源利用率
- 2.更快速的交付和部署
- 3.高效的部署和扩容
- 4.更简单的管理
- Docker核心技术
- Docker镜像
- Docker容器
- Docker仓库
- Docker实现原理
- Linux Namespace
- Cgroup
- Union FS
- Docker的应用场景
- 1.微服务架构
- 2.持续集成
- 3.快速部署和伸缩
- 4.环境部署
Docker
Docker是容器的一种,容器指的是:一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。
容器技术本质上是:对计算机资源的隔离与控制,可以理解为一种沙盒技术,沙盒就像集装箱一样。
Docker是一个开源的容器引擎,是容器概念的落地实现,诞生于2013年初,最初是dotCloud公司内部的一个业余项目。
为什么用Docker?
作为一种新型的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势。
Docker在如下几个方面具有较大的优势:
1.提升系统资源利用率
Docker容器是一种轻量级的虚拟化技术,目的和虚拟机一样,都是为了创造"隔离环境",但是它不像VM采用操作系统级的资源隔离,容器采用的是进程级的系统隔离。
比较上面两张图,我们发现虚拟机是携带操作系统,本身很小的应用程序却因为携带了操作系统而变得非常大,很笨重。
Docker是不携带操作系统的,所以Docker的应用就非常的轻巧,Docker对系统资源的利用率很高,一台主机上可以同时运行数千个Docker容器。
2.更快速的交付和部署
Docker容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
3.高效的部署和扩容
Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。
这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
4.更简单的管理
使用Docker,只需要小小的修改,就可以替代以往大量的更新工作。所以的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
Docker核心技术
Docker技术的三大核心概念分别是:Docker镜像、Docker容器、Docker仓库。掌握这三个组件的概念有助于我们进一步了解Docker的工作原理。
三个组件的关系
下图是三者之间的关系:
这三个组件组成了Docker的整个生命周期。
Docker镜像
Docker镜像是一种轻量级可执行的独立软件包,Docker镜像提供容器运行时所需的程序、库、资源、配置等文件,组成了Docker容器的静态文件系统运行环境。
简单的理解为:Docker镜像是Docker容器的静态视角,Docker镜像是启动Docker容器的基础。
我们可以使用docker images来列出本地主机上的Dokcer镜像:
docker images
示例:
[root@Master ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jdk8 v2.0 a24a58951a04 16 months ago 433MB
nginx 1.22 08a1cbf9c69e 20 months ago 142MB
rancher/rancher v2.6.5 f944ac578a0e 2 years ago 1.47GB
rancher/rancher v2.5-head c1aff654545a 2 years ago 1.07GB
tomcat 8 2d2bccf89f53 2 years ago 678MB
mysql 5.7 c20987f18b13 2 years ago 448MB
alpine latest c059bfaa849c 2 years ago 5.59MB
centos 7 eeb6ee3f44bd 2 years ago 204MB
alpine 3.10 e7b300aee9f9 3 years ago 5.58MB
参数介绍:
- REPOSITORY: 表示镜像的仓库源;
- TAG: 镜像的标签;
- IMAGE ID: 镜像ID;
- CREATED: 镜像创建时间;
- SIZE: 镜像大小;
Docker容器
容器就是一个存放东西的地方,就像书包可以装各种文具、衣柜可以放各种衣服、鞋架可以放各种鞋子一样.
我们现在所说的容器存放的东西,更偏向于应用比如:网站、程序甚至是系统环境.
容器技术本质上是: 对计算机资源的隔离与控制,可以理解为一种沙盒技术,沙盒就像集装箱一样.
Docker是容器的一种,除此之外: 还有其他容器, 比如: CoreOs的rkt, Docker是一个开源的容器引擎.
Docker仓库
Docker仓库, 英文名Repository, 就是集中存放Docker镜像的地方.
Docker官方维护了一个公共仓库: https://hub.docker.com , 这里提供了可以满足大部分需求的Docker镜像(从2024年开始这个仓库闭源了)。
除了Docker官方提供了Docker Hub的镜像服务, 国内一些云服务商也提供类似于Docker Hub的公开服务。
比如: 阿里云、腾讯云、网易云、DaoCloul等镜像服务,这些镜像服务被成为加速器。
我们可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器。
比如使用阿里云,配置如下:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://registry.docker-cn.com","https://s3d6l2fh.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker实现原理
Docker容器的实现原理就是通过Namespace命名空间实现进程隔离、UnionFileSystem联合文件系统实现文件系统隔离、ControlGroups控制组实现资源隔离。
Docker利用Linux中的核心分离机制, 例如Cgroups,以及Linux的核心Namespace(命名空间)来创建独立的容器。
一句话概括起来Docker就是利用Namespace做资源隔离,用Cgroup做资源限制,利用Union FS做容器文件系统的轻量级虚拟化技术。
Linux Namespace
Linux Namespace, 即Linux命名空间,是Linux内核Kernel提供的功能,它可以隔离一系列的系统资源,如 进程ID、User ID、Network、文件系统等。
Docker利用Linux Namespace功能,实现多个Docker容器相互隔离, 实现进程隔离。
Cgroup
Cgroup, 全称Linux Control Groups, 可以对一组进程及这些进程的子进程进行资源限制。
比如: 包括 CPU、内存、存储、网络、设备访问权限等, 通过Cgroups可以很轻松的限制某个进程的资源占用并且统计该进程的实时使用情况。
Docker容器就是: 通过Cgroups控制组实现资源隔离的。
Cgroups由3个组件构成: 分别是 cgroup(控制组)、subsystem(子系统)、以及hierarchy(层级树), 3者相互协同作用。
- cgroup是对进程分组管理的一种机制, 一个cgroup通常包含一组(多个)进程, Cgroups中的资源控制都以cgroup为单位实现。
- subsystem是一组(多个)资源控制的模块, 每个subsystem会管理到某个cgroup上, 对该cgroup中的进程做出相应的限制和控制。
- hierarchy会将一组(多个)cgroup构建成一个树状结构, Cgroups可以利用该结构实现继承等功能。
Union FS
Docker容器是通过UnionFileSystem(Union FS)联合文件系统实现文件系统隔离。
我们都知道Docker镜像是一种分层结构, 每一层构建在其它层之上, 从而实现增量增加内容的功能, 这是如何实现的?
要理解这个问题, 首先需要理解 Union File System (简称: UnionFS), 它是为Linux系统设计的将其它文件系统联合到一个联合挂载点的文件系统服务。UnionFS使用branch(分子)将不同文件系统的文件和目录透明叠加覆盖, 形成一个单一一致的文件系统, 此外UnionFS使用写时复制(Copy on Write,简称, CoW)技术来提高合并后文件系统的资源利用。
Docker使用的第一种存储驱动为AUFS(Advanced Multi-layered unification filesystem), AUFS完全重写了早期的UnionFS,目的是提高其性能与可靠性,此外还引入了如branch负载均衡等新功能。
与UnionFS类似, AUFS可以在基础的文件系统上增量的增加新的文件系统,通过叠加覆盖的形式最终形成一个文件系统。通过AUFS最上层是可读可写层, 而其它层只是只读层,每一层都只是一个普通的文件系统。
Docker镜像分层、增量增加等功能正是通过利用AUFS的分层文件系统结构、增量增加等功能实现, 这也导致了运行Docker容器如果没有指定volume(数据卷)或bind mount, 则Docker容器结束后,运行时产生的数据便丢失了。
Docker的应用场景
1.微服务架构
Docker容器适用于构建和管理微服务应用程序, 每个微服务可以在自己的容器中运行, 独立进行扩展和更新, 而不影响整个应用程序。
2.持续集成
Docker可以与CI/CD工具集成, 使得构建、测试和部署流程更加灵活和可靠, 容器可以在各个阶段轻松部署, 确保环境一致性。
3.快速部署和伸缩
Docker容器可以在几秒钟内启动, 因此可以更快速部署和扩展应用程序。
4.环境部署
Docker可以确保测试环境和生产环境的一致性, 从而减少由于环境差异而引起的问题, 这个功能是Docker流行的非常重要的原因, 就是开发环境与线上环境一致。
相关文章:
Docker的理解
Docker的理解 Docker为什么用Docker?1.提升系统资源利用率2.更快速的交付和部署3.高效的部署和扩容4.更简单的管理 Docker核心技术Docker镜像Docker容器Docker仓库 Docker实现原理Linux NamespaceCgroupUnion FS Docker的应用场景1.微服务架构2.持续集成3.快速部署和…...
通信协议总结
IIC 基本特点 同步,半双工 标准100KHz,最高400KHz(IIC主要应用于低速设备) 硬件组成 需外接上拉电阻 通信过程 空闲状态 SDA和SCL都处于高电平 开始信号S和终止信号P 在数据传输过程中,当SCL0时,SDA才…...
Pinia + 组合式写法 + 选项式写法
选项式: 1.定义Store import { defineStore } from pinia// option api 选项式 export const useAlterStore defineStore(alter, {state: () > {return {num: 1}},getters: { // 可以看做是计算属性doubleCount: (state) > state.num * 2},actions: {// 同…...
vCenter-vAPI-Endpoint service health shows as Yellow
- 问题摘要:vAPI-Endpoint service health shows as Yellow - 解决方案/工作方法: 使用命令重启vAPI Endpoint service后该服务运行正常。 service-control --stop vmware-vapi-endpoint service-control --start vmware-vapi-endpoint VMware KB&…...
2018年全国大学生数学建模竞赛A题高温服装设计(含word论文和源代码资源)
文章目录 一、部分题目二、部分论文三、部分Matlab源代码问题11 求解h1h22 已知h1h2求解温度分布 问题21 求解第二层最佳厚度 四、完整word版论文和源代码(两种获取方式) 一、部分题目 2018 年高教社杯全国大学生数学建模竞赛题目 A 题 高温作业专用服…...
UEFA EURO 2024 GERMANY
UEFA EURO 2024 GERMANY 画个流程图,哈哈...
Ueditor中集成135编辑器
一、背景 在资讯项目平台运营过程中,资讯需要排版,一般都是在135编辑器排好以后,复制到平台中UEditor编辑器中,所以,他们建议集成一下135哈 二、了解135编辑器 开始调研了解135编辑器,发现人家就支持集成…...
C++ type list 模板
C 实现一个type list 模板,在编译期计算。这个type list主要有构造,列表头类型,列表尾类型,concat操作,去除列表元素重复,获取指定元素,删除指定元素的操作。实现代码贴在下面: #pr…...
vscode刷LeetCode算法题环境配置
首先,下载nodejs 在vscode中安装LeetCode插件 安装好进行配置 选择leetcode-cn 填上刚才下载node.exe的路径 完成之后重启一下vscode 重启之后登陆LeetCode 完成之后就可以看到题目了 点击 code now 就可以开始刷题了...
OpenCV报错已解决:Vector析构异常OpencvAssert CrtlsValidHeapPointer
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 在使用OpenCV进行图像处理时,我们可能会遇到Vector析构异常OpencvAssert CrtlsValidHeapPointer的问题。本文将…...
AudioLM音频生成模型
GPT-4o (OpenAI) AudioLM(Audio Language Model)是一种生成音频的深度学习模型。它可以通过学习语言模型的结构来生成连贯和高质量的音频信号。这类模型通常应用于语音合成、音乐生成和音频内容生成等领域。以下是一些与AudioLM相关的核心概念和技术细…...
Shardingsphere-Proxy 5.5.0数据迁移
Shardingsphere-Proxy 5.5.0数据迁移 Shardingsphere系列目录:背景配置集群部署搭建Zookeeper修改shardingsphere-proxy配置重启shardingsphere-proxy 执行数据迁移连接代理数据库实例(Navicate)应用代理数据库注册目标分片数据库存储单元注销…...
c语言中的for循环
在C语言中,for循环是控制结构之一,用于多次执行一段代码。其具体用法如下: 语法 for (初始化表达式; 条件表达式; 更新表达式) {// 循环体 }参数说明 初始化表达式:在循环开始前执行一次,用于初始化循环控制变量。条…...
大模型微调(finetune)方法
lora adapter prefix-tuning p-tuning prompt-tuning 大模型微调后灾难行遗忘 1、主流解决大模型微调后灾难行遗忘的方法是在微调过程中加入通用的指令数据。 2、自我蒸馏方法主要是通过模型本身对任务数据进行生成引导,构建自我蒸馏数据集,改变任务数…...
Bootstrap 5 卡片
Bootstrap 5 卡片 Bootstrap 5 是一个流行的前端框架,它提供了一套丰富的组件和工具,用于快速开发响应式和移动设备优先的网页。在 Bootstrap 5 中,卡片(Card)是一个非常重要的组件,用于展示内容,如文本、图片、列表等。卡片组件具有高度的灵活性和可定制性,可以轻松地…...
【ONLYOFFICE 8.1】的安装与使用——功能全面的 PDF 编辑器、幻灯片版式、优化电子表格的协作
🔥 个人主页:空白诗 文章目录 一、引言二、ONLYOFFICE 简介三、安装1. Windows/Mac 安装2. 文档开发者版安装安装前准备使用 Docker 安装使用 Linux 发行版安装配置 ONLYOFFICE 文档开发者版集成和开发 四、使用1. 功能全面的 PDF 编辑器PDF 查看和导航P…...
「51媒体」浙江地区媒体邀约
传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体宣传加速季,100万补贴享不停,一手媒体资源,全国100城线下落地执行。详情请联系胡老师。 浙江地区的媒体邀约资源丰富多样,涵盖了电视台…...
2-18 基于matlab的关于联合对角化盲源分离算法的二阶盲识别(SOBI)算法
基于matlab的关于联合对角化盲源分离算法的二阶盲识别(SOBI)算法。通过联合对角化逼近解混矩阵。构建的四组信号,并通过认为设置添加噪声比例,掩盖信号信息。通过SOBI算法实现了解混。程序已调通,可直接运行。 2-18联合…...
C++中常用的标志库
标准库 C标准库是一个强大的工具集,它包含了一组丰富的类和函数,可以帮助开发者进行各种操作,如输入输出、字符串操作、数据结构管理、算法实现等。以下是一些常用的C标准库及其使用方法。 1. 输入输出库 <iostream> 用于标准输入输…...
近期计算机领域的热点技术
随着科技的飞速发展,计算机领域的新技术、新趋势层出不穷。本文将探讨近期计算机领域的几个热点技术趋势,并对它们进行简要的分析和展望。 一、人工智能与机器学习 人工智能(AI)和机器学习(ML)是近年来计算…...
HarmonyOS Next 系列之可移动悬浮按钮实现(六)
系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现(一) HarmonyOS Next 系列之验证码输入组件实现(二) HarmonyOS Next 系列之底部标签栏TabBar实现(三) HarmonyOS Next 系列之HTTP请求封装和Token…...
如何获得更高质量的回答-chatgpt
在与技术助手如ChatGPT进行交互时,提问的方式直接影响到你获得的答案质量。以下是几个关键的提问技巧,可以帮助你在与ChatGPT的互动中获得更有效的回答: 1. 清晰明了的问题 技巧:确保问题清晰明了,避免含糊不清或模糊的…...
ASP.NET Core 6.0 使用 Log4Net 和 Nlog日志中间件
前言 两年前,浅浅的学过 .NET 6,为啥要记录下来,大概是为了以后搭架子留下引线,还有抛砖引玉。 1. 环境准备 下载 建议使用 Visual Studio 2022 开发版 官网的下载地址:Visual Studio 2022 IDE - 适用于软件开发人员的编程工具借助 Visual Studio 设计,具有自动完成…...
使用Spring Boot实现与ActiveMQ的消息队列集成
使用Spring Boot实现与ActiveMQ的消息队列集成 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 消息队列在现代分布式系统中扮演着至关重要的角色,…...
深度学习 - Transformer 组成详解
整体结构 1. 嵌入层(Embedding Layer) 生活中的例子:字典查找 想象你在读一本书,你不认识某个单词,于是你查阅字典。字典为每个单词提供了一个解释,帮助你理解这个单词的意思。嵌入层就像这个字典…...
ONLYOFFICE 8.1编辑器桌面应用程序来袭——在线全面测评
目录 ✈下载✈ 👀界面👀 👊功能👊 🧠幻灯片版式的重大改进🧠 ✂无缝切换文档编辑、审阅和查看模式✂ 🎵在演示文稿中播放视频和音频文件🎵 🤗版本 8.1:…...
《Windows API每日一练》6.4 程序测试
前面我们讨论了鼠标的一些基础知识,本节我们将通过一些实例来讲解鼠标消息的不同处理方式。 本节必须掌握的知识点: 第36练:鼠标击中测试1 第37练:鼠标击中测试2—增加键盘接口 第38练:鼠标击中测试3—子窗口 第39练&…...
[C#]基于opencvsharp实现15关键点人体姿态估计
数据集 正确选择数据集以对结果产生适当影响也是非常必要的。在此姿势检测中,模型在两个不同的数据集即COCO关键点数据集和MPII人类姿势数据集上进行了预训练。 1. COCO:COCO关键点数据集是一个多人2D姿势估计数据集,其中包含从Flickr收集的…...
lambda-map.merge
map.merge 结论: 1.当前传入的 key ,value biFunction 2.如果之前map不存在则直接put(当前key,当前value) 3.如果之前map已经有了,老value与 当前value 进入function处理后再 put(当前key,处理后的value)...
pppd 返回错误码 含义
错误码 00: pppd已经断开,或者已经成功建立连接后请求方又中 断了。 01: 发成了一个严重错误,例如系统调用失败或者访问非法内存。 02: 处理给定操作是检测到错误,例如使用两个互斥的操作。 03:…...
汽车网站建设价格/百度网页版链接地址
今天上google,搜一个东西,刚打了‘判断’两字,出现如下情景 第二个。。。判断字符串是否为数字,脑子里顺便想了下。 自己实现了一个。。 if((0v)(v)){alert(nmber);}//number//1:就是Number类型的数字if((v)v){alert(string numbe…...
南京网站制作学校/此网站不支持下载视频怎么办
《安卓市场旧版本》一款好用功能又多的手机软件商店,《安卓市场旧版本》应用业界先进技术,压缩数据节省流量,体验Android手机无限精彩。特设社交功能,用户可通过微博、短信、云推送等方式与好友分享软件!官方介绍《安卓…...
企业网站建设的原则包括/如何建立一个自己的网站
7.1、进程简介Linux是一个多用户多任务的操作系统,可以同时执行几个任务,并在一个任务还没有执行完成就执行另一项任务。在Linux中,每个执行的任务都称为进程(process)。通常进程与程序的区别为:程序 (program):通常为…...
青岛网站设计哪家好/seoul是什么意思中文
state 1.类中方法this的指向 constructor和render里的this指向类组件的实例对象在类组件内部定义的普通函数,作为onClick的回调,不是通过实例调用的,是直接调用,并且类组件内部默认开启了局部严格模式,所以this指向u…...
wordpress ppt预览/兰州seo
1当启动类和controller在同类中时,在该类添加注解Controller即可 2当启动类和controller分开时,启动类要放在项目的根目录下,启动类中添加注解SpringBootApplication, 2当启动类和controller分开时,启动类要放在项目的…...
网站营销队伍/培训机构在哪个平台找
前言 现在Java程序员面试都是因为没有丰富的工作经验和自己过硬的技术,所有都不知道一般互联网应该会问什么技术问题,加上自己可能去面试的时候没有准备的太充分,一面试刚跟面试官扯几个面试题就不知道自己在哪里了,被怼的体无完…...