Docker容器(一)概述
一、虚拟化概述
1.1引⼊虚拟化技术的必要性
服务器只有5%的时间是在⼯作的;在其它时间服务器都处于“休眠”状态.
虚拟化前
- 每台主机⼀个操作系统;
- 软硬件紧密结合;
- 在同⼀个主机上运⾏多个应⽤程序通常会遭遇冲突;
- 系统的资源利⽤率低;
- 硬件成本⾼昂⽽且不够灵活.
虚拟化后
- 打破了操作系统和硬件的相互依赖;
- 通过封装到虚拟机的技术,管理操作系统和应⽤程序为单⼀的个体;
- 强⼤的安全和故障隔离;
- 虚拟机是独⽴于硬件的,它们能在任何硬件上运⾏.
1.2 虚拟化定义
虚拟化,是通过虚拟化技术将⼀台计算机虚拟为多台逻辑计算机。
在⼀台计算机上同时运⾏多个逻辑计算机,每个逻辑计算机可运⾏不同的操作系统,⽽且应⽤程序都可以在相互独⽴的空间内运⾏⽽互不影响,从⽽显著提⾼计算机的⼯作效率。
1.3虚拟化技术的分类
- 全虚拟化技术
- 半虚拟化技术/准虚拟化技术
全虚拟化技术
完全虚拟化技术⼜叫硬件辅助虚拟化技术,最初使⽤的虚拟化技术就是全虚拟化(Full Virtualization)技术,它在虚拟机(VM)和硬件之间⼜加了⼀个软件层——Hypervisor,或者叫虚拟化监控器(VMM).
- Hypervisor直接运⾏在物理硬件之上——KVM;
- Hypervisor运⾏在另⼀个操作系统中——QEMU和Wine.
半虚拟化技术
它就是在全虚拟化的基础上,把客户操作系统进⾏了修改,增加了⼀个专⻔的API.
这个API可以将客户操作系统发出的指令进⾏最优化,即不需要Hypervisor耗费⼀定的资源进⾏翻译操作,因此Hypervisor的⼯作负担变得⾮常的⼩,整体性能也有很⼤的提升.
寄居架构
就是在操作系统之上安装和运⾏虚拟化技术,依赖于主机操作系统对设备的⽀持和物理资源的管理;
裸⾦属架构
就是直接在硬件上⾯安装虚拟化软件,再在其上安装操作系统和应⽤,依赖虚拟层内核和服务器控制台进⾏管理.
寄居架构
裸⾦属架构
二、docker概述
2.1什么是容器
容器是一种虚拟化技术,它可以在操作系统层面上把应用程序及其依赖项打包在一起。这个打包形成的包被称作容器镜像,它可以被快速地部署到不同的计算机上。容器镜像包含了应用程序,运行环境和系统库,使得应用程序的依赖项可以被完全隔离。这种隔离可以保证容器内的应用程序在不同的计算机上都能够运行。容器技术具有轻量、快速、可移植等特点,使得应用程序能够在不同的环境中快速、可靠地部署和运行。
2.2什么是docker
Docker是dotcloud公司开源的⼀款产品,dotcloud是2010年成⽴的⼀家公司,主要基于PaaS(Platform as a Service)平台为开发者提供服务.
- Linux Container(LXC)是⼀种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源;
- Docker是PaaS提供商dotcloud开源的基于LXC的⾼级容器引擎,源代码托管在GitHub上,基于Golang语⾔并遵从Apache 2.0协议开源;
- Docker设想是交付运⾏环境如同海运,OS如同⼀个货轮,每⼀个在OS基础上的软件都如同⼀个集装箱,⽤户可以通过标准化⼿段⾃由组装运⾏环境,同时集装箱的内容可以由⽤户⾃定义,也可以由专业⼈员制造.
2.3Docker与传统虚拟机对比
Docker与传统虚拟机的主要区别可以从以下几个方面进行对比:
- 启动速度:启动虚拟机需要先启动虚拟机的操作系统,再启动应用,这个过程可能会非常慢;而启动Docker相当于启动宿主操作系统上的一个进程,因此启动速度会更快。
- 占用资源:虚拟机是一个完整的操作系统,需要占用大量的磁盘、内存和CPU资源;相比之下,Docker容器只是一个进程,所需的资源更少,一般在1-5%之间,而虚拟机可能需要5%-15%的资源。
- 高可用策略:在高可用策略上,Docker容器的资源是弹性伸缩的,可以实现负载均衡;而虚拟机则是通过备份、异地容灾和迁移来实现资源高可用。
- 实现原理:Docker与虚拟机的实现原理有所不同。虚拟机是通过模拟硬件来创建一个完整操作系统的副本,而Docker则是利用Linux内核的一些特性,如Cgroups和Namespace,来实现资源的隔离和管理。
- 总结:虽然Docker容器和虚拟机都是为了实现应用程序的隔离和部署,但它们在实现方式、资源消耗、启动速度等方面有很大的不同。选择使用哪种技术取决于具体的应用场景和需求。
2.4Docker的构成
Docker仓库: https://hub.docker.com
2.Docker⾃身组件:
- Docker Client: Docker的客户端
- Docker Server: Docker daemon的主要组成部分,接受⽤户通过Docker Client发送的请求,并按照相应的路由规则实现路由分发
- Docker镜像: Docker镜像运⾏之后,⽣成容器(docker run)
阿⾥镜像仓库:
https://cr.console.aliyun.com/cn-hangzhou/instances/images
腾讯镜像仓库:
https://console.cloud.tencent.com/tke2/registry/qcloud/default?rid=1
华为镜像仓库:
https://mirrors.huaweicloud.com
2.5Docker化应用
早期
优化
镜像方式
相关文章:

Docker容器(一)概述
一、虚拟化概述 1.1引⼊虚拟化技术的必要性 服务器只有5%的时间是在⼯作的;在其它时间服务器都处于“休眠”状态. 虚拟化前 每台主机⼀个操作系统; 软硬件紧密结合; 在同⼀个主机上运⾏多个应⽤程序通常会遭遇冲突; 系统的资源利⽤率低; 硬件成本⾼昂⽽且不够灵活…...

Facebook引流怎么做?写个脚本就好!
在当今的数字化时代,流量对于任何一个网站或应用程序来说都至关重要,Facebook,作为全球最大的社交网络平台,无疑是一个获取流量的绝佳场所,但是,如何有效地从Facebook引流呢?写个脚本就好了! 在本文中&am…...

自动化集成有哪些典型应用场景?
为什么要做自动化场景集成? 主要分为以下几点: 提高效率/减少错误:减少人工操作、人为错误、人力成本,提高生产效率、生产质量和稳定性。 提高可靠性:提高系统的可靠性和稳定性,减少系统故障和停机时间。…...
探讨几种在CentOS 7上实现文件上传的方法
最近服务器过期了,把之前服务器的数据库都备份了下来,现在准备迁移各种服务,这就涉及到文件传输。之前用得多的都是xshell里的xtp来传,校园网禁用了ssh协议,还有一大堆乱七八糟的协议,我一般用的代理方法或…...
AWS EC2使用 instance profile 访问S3
AWS EC2 instance可以使用instance profile 配置访问S3的权限。 然后就可以直接在EC2上执行 python代码或者AWS CLI去访问S3了。 唯一需要注意的地方是,申明region。 示例代码: aws s3 ls xxxx-s3-bucket --region xxx-region import boto3 client …...

python中函数式编程
文章目录 map()函数filter()函数reduce()函数 map()函数 当使用map()函数时,可以使用lambda表达式来定义一个简单的转换函数。 以下是一个使用map()函数和lambda表达式的简单示例: numbers [1, 2, 3, 4, 5] squared_numbers map(lambda x: x**2, nu…...
Java_JDK8到JDK21各版本发行时间及重要特性
Java_JDK8到JDK21各版本发行时间及重要特性 背景JDK8新特性(2014年3月)JDK9新特性(2017年9月)JDK10新特性(2018年3月)JDK11新特性(2018年9月)(LTS版本)JDK12新特性(2019年…...

03 数仓平台 Kafka
kafka概述 定义 Kafka 是一个开源的分布式事件流平台(Event Streaming Plantform),主要用于大数据实时领域。本质上是一个分布式的基于发布/订阅模式的消息队列(Message Queue)。 消息队列 在大数据场景中主要采用…...
2023年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——解析版
文章目录 2023年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题三、逻辑推理真题(2023-26)真题(2023-27)真题(2023-28)真题(2023-29)真题(2023-30)真题(2023-31-32)真题(2023-33)真题(2023-34)真题(2023-35)真题(2023-36)真题(2023-37-38...

Matlab论文插图绘制模板第129期—函数网格曲面图
在之前的文章中,分享了Matlab函数折线图的绘制模板: 函数三维折线图: 进一步,再来分享一下函数网格曲面图。 先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请自…...

无限移动的风景 css3 动画 鼠标移入暂停
<style>*{margin:0;padding:0;/* box-sizing: border-box; */}ul{list-style: none;}#nav{width:900px;height:100px;border:2px solid rgb(70, 69, 69);margin:100px auto; overflow: hidden;}#nav ul{animation:moving 5s linear infinite;width:200%; /*怎么模拟动画…...

Java基本数据类型、包装类及拆装箱详解
Java的基本数据类型和对应的包装类是Java语言中处理数据的两个关键概念。基本数据类型提供了简单而高效的方式来存储数据,而包装类使得基本数据类型具有对象的特性。本文将深入探讨基本数据类型与包装类的应用场景及详细描述,并对自动拆箱和装箱的源码实…...

SIT2596,可替代LM2596,40V 输入 150KHz 3A 降压型电源转换器
SIT2596 是一款降压型开关电压调节芯片,可固定输出 3.3V、5V、12V,也可根据需要调节 输出电压,电压输出范围在 1.2V-37V,输入电压最高可达 40V,输出电流可达 3A;同时具有优异 的线性调整率和负载调整率。 SIT2596 内部集成频率…...

python + mongodb使用入门
最近用了下mongodb ,简单做个记录: 1.启动系统mongo服务 mongod -f mongod.conf其中 mongod.conf 是配置文件,示例如下: dbpath/youpath/data/db #数据库保存位置 logpath/youpath/data/mongod.log #日志 logappendtrue fo…...

焊接专业个人简历(通用25篇)
如果大家想在焊接行业的求职中脱颖而出,轻松斩获心仪职位,参考这25篇通用的焊接专业个人简历案例,无论您是初学者还是资深焊工,都能从中找到适合自己的简历内容。参考这些简历,让您的求职之路更加顺畅。 焊接专业个人…...
c++学习第四讲---函数提高
1.函数默认参数: 在( )中将参数赋值,如果传值了,则用传入值,否则才用函数中默认参数。 例: int func(int a, int b 3, int c 3) {return a b c; } int main() {cout << func(1, 2)…...

如何使用cpolar+Plex在Windows系统上搭建私人媒体影音站点公网可访问
文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频,已经算是生活中稀松平常的场景了,特别是各…...

FreeRTOS-软件定时器
软件定时器 在FreeRTOS中可以设置无数个软件定时器,都是基于系统滴答中断。 使用软件定时器需要指定时间:启动定时器和运行回调函数。启动定时器和运行回调函数的间隔为定时器的周期。 使用软件定时器需要指定类型:一次性(回调函数…...
Lab 3: Recursion, Tree Recursion(CS61A 2020)
在网上没有lab3相应的答案,作者也卡蛮久 (就此补充一下答案) Q2: WWPD: Journey to the Center of the Earth Use Ok to test your knowledge with the following "What Would Python Display?" questions: python3 ok -q sr-ww…...

GVIM 配置 for begin/end class/endclass 等配对
有时候我们的代码很长,或者结构比较复杂,多个if/else 或者begin/end 快嵌套,为了阅读方便,利用gvim插件实现块跳转还是很有实用性的,下面的.vimrc的配置,简单方便。 使用方式: 将光标定位到块头…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...