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)是近年来计算…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析
LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...

使用homeassistant 插件将tasmota 接入到米家
我写一个一个 将本地tasmoat的的设备同通过ha集成到小爱同学的功能,利用了巴法接入小爱的功能,将本地mqtt转发给巴法以实现小爱控制的功能,前提条件。1需要tasmota 设备, 2.在本地搭建了mqtt服务可, 3.搭建了ha 4.在h…...

Heygem50系显卡合成的视频声音杂音模糊解决方案
如果你在使用50系显卡有杂音的情况,可能还是官方适配问题,可以使用以下方案进行解决: 方案一:剪映替换音色(简单适合普通玩家) 使用剪映换音色即可,口型还是对上的,没有剪映vip的&…...
TMC2226超静音步进电机驱动控制模块
目前已经使用TMC2226量产超过20K,发现在静音方面做的还是很不错。 一、TMC2226管脚定义说明 二、原理图及下载地址 一、TMC2226管脚定义说明 引脚编号类型功能OB11电机线圈 B 输出 1BRB2线圈 B 的检测电阻连接端。将检测电阻靠近该引脚连接到地。使用内部检测电阻时,将此引…...