当前位置: 首页 > news >正文

Docker容器(一)概述

一、虚拟化概述

1.1引⼊虚拟化技术的必要性 

服务器只有5%的时间是在⼯作的;在其它时间服务器都处于“休眠”状态.

 

虚拟化前

  • 每台主机⼀个操作系统; 
  • 软硬件紧密结合; 
  • 在同⼀个主机上运⾏多个应⽤程序通常会遭遇冲突; 
  • 系统的资源利⽤率低; 
  • 硬件成本⾼昂⽽且不够灵活. 

虚拟化后

  • 打破了操作系统和硬件的相互依赖; 
  • 通过封装到虚拟机的技术,管理操作系统和应⽤程序为单⼀的个体; 
  • 强⼤的安全和故障隔离; 
  • 虚拟机是独⽴于硬件的,它们能在任何硬件上运⾏. 

1.2 虚拟化定义

虚拟化,是通过虚拟化技术将⼀台计算机虚拟为多台逻辑计算机。 


在⼀台计算机上同时运⾏多个逻辑计算机,每个逻辑计算机可运⾏不同的操作系统,⽽且应⽤程序都可以在相互独⽴的空间内运⾏⽽互不影响,从⽽显著提⾼计算机的⼯作效率。

1.3虚拟化技术的分类

  • 全虚拟化技术 
  • 半虚拟化技术/准虚拟化技术 

 全虚拟化技术

完全虚拟化技术⼜叫硬件辅助虚拟化技术,最初使⽤的虚拟化技术就是全虚拟化(Full Virtualization)技术,它在虚拟机(VM)和硬件之间⼜加了⼀个软件层——Hypervisor,或者叫虚拟化监控器(VMM). 

  1. Hypervisor直接运⾏在物理硬件之上——KVM; 
  2. Hypervisor运⾏在另⼀个操作系统中——QEMU和Wine.

 半虚拟化技术

它就是在全虚拟化的基础上,把客户操作系统进⾏了修改,增加了⼀个专⻔的API. 
这个API可以将客户操作系统发出的指令进⾏最优化,即不需要Hypervisor耗费⼀定的资源进⾏翻译操作,因此Hypervisor的⼯作负担变得⾮常的⼩,整体性能也有很⼤的提升.

 寄居架构 
就是在操作系统之上安装和运⾏虚拟化技术,依赖于主机操作系统对设备的⽀持和物理资源的管理; 


裸⾦属架构 
就是直接在硬件上⾯安装虚拟化软件,再在其上安装操作系统和应⽤,依赖虚拟层内核和服务器控制台进⾏管理.

寄居架构  

 裸⾦属架构 

 二、docker概述

2.1什么是容器

容器是一种虚拟化技术,它可以在操作系统层面上把应用程序及其依赖项打包在一起。这个打包形成的包被称作容器镜像,它可以被快速地部署到不同的计算机上。容器镜像包含了应用程序,运行环境和系统库,使得应用程序的依赖项可以被完全隔离。这种隔离可以保证容器内的应用程序在不同的计算机上都能够运行。容器技术具有轻量、快速、可移植等特点,使得应用程序能够在不同的环境中快速、可靠地部署和运行。

 2.2什么是docker

Docker是dotcloud公司开源的⼀款产品,dotcloud是2010年成⽴的⼀家公司,主要基于PaaS(Platform as a Service)平台为开发者提供服务. 

  1. Linux Container(LXC)是⼀种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源; 
  2. Docker是PaaS提供商dotcloud开源的基于LXC的⾼级容器引擎,源代码托管在GitHub上,基于Golang语⾔并遵从Apache 2.0协议开源; 
  3. Docker设想是交付运⾏环境如同海运,OS如同⼀个货轮,每⼀个在OS基础上的软件都如同⼀个集装箱,⽤户可以通过标准化⼿段⾃由组装运⾏环境,同时集装箱的内容可以由⽤户⾃定义,也可以由专业⼈员制造. 

2.3Docker与传统虚拟机对比 

Docker与传统虚拟机的主要区别可以从以下几个方面进行对比:

  1.  启动速度:启动虚拟机需要先启动虚拟机的操作系统,再启动应用,这个过程可能会非常慢;而启动Docker相当于启动宿主操作系统上的一个进程,因此启动速度会更快。
  2. 占用资源:虚拟机是一个完整的操作系统,需要占用大量的磁盘、内存和CPU资源;相比之下,Docker容器只是一个进程,所需的资源更少,一般在1-5%之间,而虚拟机可能需要5%-15%的资源。
  3. 高可用策略:在高可用策略上,Docker容器的资源是弹性伸缩的,可以实现负载均衡;而虚拟机则是通过备份、异地容灾和迁移来实现资源高可用。
  4.  实现原理:Docker与虚拟机的实现原理有所不同。虚拟机是通过模拟硬件来创建一个完整操作系统的副本,而Docker则是利用Linux内核的一些特性,如Cgroups和Namespace,来实现资源的隔离和管理。
  5. 总结:虽然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语言中处理数据的两个关键概念。基本数据类型提供了简单而高效的方式来存储数据&#xff0c;而包装类使得基本数据类型具有对象的特性。本文将深入探讨基本数据类型与包装类的应用场景及详细描述&#xff0c;并对自动拆箱和装箱的源码实…...

SIT2596,可替代LM2596,40V 输入 150KHz 3A 降压型电源转换器

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

python + mongodb使用入门

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

焊接专业个人简历(通用25篇)

如果大家想在焊接行业的求职中脱颖而出&#xff0c;轻松斩获心仪职位&#xff0c;参考这25篇通用的焊接专业个人简历案例&#xff0c;无论您是初学者还是资深焊工&#xff0c;都能从中找到适合自己的简历内容。参考这些简历&#xff0c;让您的求职之路更加顺畅。 焊接专业个人…...

c++学习第四讲---函数提高

1.函数默认参数&#xff1a; 在&#xff08; &#xff09;中将参数赋值&#xff0c;如果传值了&#xff0c;则用传入值&#xff0c;否则才用函数中默认参数。 例&#xff1a; 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.前言 用手机或者平板电脑看视频&#xff0c;已经算是生活中稀松平常的场景了&#xff0c;特别是各…...

FreeRTOS-软件定时器

软件定时器 在FreeRTOS中可以设置无数个软件定时器&#xff0c;都是基于系统滴答中断。 使用软件定时器需要指定时间&#xff1a;启动定时器和运行回调函数。启动定时器和运行回调函数的间隔为定时器的周期。 使用软件定时器需要指定类型&#xff1a;一次性&#xff08;回调函数…...

Lab 3: Recursion, Tree Recursion(CS61A 2020)

在网上没有lab3相应的答案&#xff0c;作者也卡蛮久 &#xff08;就此补充一下答案&#xff09; 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 等配对

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

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...

32位寻址与64位寻址

32位寻址与64位寻址 32位寻址是什么&#xff1f; 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元&#xff08;地址&#xff09;&#xff0c;其核心含义与能力如下&#xff1a; 1. 核心定义 地址位宽&#xff1a;CPU或内存控制器用32位…...

网页端 js 读取发票里的二维码信息(图片和PDF格式)

起因 为了实现在报销流程中&#xff0c;发票不能重用的限制&#xff0c;发票上传后&#xff0c;希望能读出发票号&#xff0c;并记录发票号已用&#xff0c;下次不再可用于报销。 基于上面的需求&#xff0c;研究了OCR 的方式和读PDF的方式&#xff0c;实际是可行的&#xff…...

基于django+vue的健身房管理系统-vue

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat12开发软件&#xff1a;PyCharm 系统展示 会员信息管理 员工信息管理 会员卡类型管理 健身项目管理 会员卡管理 摘要 健身房管理…...

视觉slam--框架

视觉里程计的框架 传感器 VO--front end VO的缺点 后端--back end 后端对什么数据进行优化 利用什么数据进行优化的 后端是怎么进行优化的 回环检测 建图 建图是指构建地图的过程。 构建的地图是点云地图还是什么信息的地图&#xff1f; 建图并没有一个固定的形式和算法…...