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化应用

早期

 

优化

镜像方式

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开发猿的平平淡淡周末---2023/12/3

2023/12/3 天气晴 温度适宜 AM 早安八点多的世界,起来舒展了下腰,阳光依旧明媚,给平淡的生活带来了一丝暖意 日常操作,喂鸡,时政,洗漱,恰饭,肝会儿游戏 看会儿手机 ___看累…

【Windows】如何实现 Windows 上面的C盘默认文件夹的完美迁移

如何实现 Windows 上面的C盘默认文件夹的完美迁移 1. 遇到的问题 在我想迁移C盘的 下载 和 视频 文件夹的时候,遇到了这样的问题,在迁移之后,我显卡录像的视频还是保存到了C盘默认位置里,以及我迁移了 下载 之后下载的盘依然是在…

LeetCode刷题---反转链表

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏:http://t.csdnimg.cn/ZxuNL http://t.csdnimg.cn/c9twt 前言:这个专栏主要讲述递归递归、搜索与回溯算法,所以下面题目主要也是这些算法做的 我讲述…

MDETR 论文报告

MDETR - Modulated Detection for End-to-End Multi-Modal Understanding MDETR - Modulated Detection for End-to-End Multi-Modal Understanding发现问题主要贡献和创新点主要方法和技术MDETR 的架构损失函数1. 框预测损失2. 软标记预测损失3. 对比对齐损失4. 总损失 实验和…

Linux网络之连接跟踪 conntrack

一 Linux网络之连接跟踪 conntrack k8s 有关conntrack的分析 ① 什么是连接跟踪 netfilter连接跟踪 conntrack 详述 思考:连接跟踪模块会对哪些协议进行跟踪?TCP、UDP、ICMP、DCCP、SCTP、GRE ② 为什么需要连接跟踪 没有连接跟踪有很多问题是不好解决的&a…

C语言-内存分配

内存分配 1. 引入 int nums[10] {0}; //对int len 10; int nums[len] {0}; //错是因为系统的内存分配原则导致的2. 概述 在程序运行时,系统为了 更好的管理进程中的内存,所以有了 内存分配机制。 分配原则: 2.1 静态分配 静态分配原…

解决top-k问题--堆排序

目录 TOP-K问题 堆排序 考虑以下情况: 1.在n个数里面找最大的一个数 2.在n个数里面找最大的两个数 3.在n个数中求前k大的数 为什么不用大根堆呢? 代码 时间复杂度 TOP-K问题 即求数据结合中前K个最大的元素或者最小的元素,一般情况下数…

使用Redis构建任务队列

文章目录 第1关:先进先出任务队列第2关:优先级任务队列第3关:定时任务队列 第1关:先进先出任务队列 编程要求 在Begin-End区域编写 add_task(task_name) 函数,实现将任务加入队列的功能,具体参数与要求如下…

论文阅读——Loss odyssey in medical image segmentation

Loss odyssey in medical image segmentation github:https://github.com/JunMa11/SegLossOdyssey 这篇文章回顾了医学图像分割中的20种不同的损失函数,旨在回答:对于医学图像分割任务,我们应该选择哪种损失函数? 首…

使用 Kettle 完成数据 ETL

文章目录 使用 Kettle 完成数据 ETL数据清洗数据处理 使用 Kettle 完成数据 ETL 现在我们有一份网站的日志数据集,准备使用Kettle进行数据ETL。先将数据集加载到Hadoop集群中,然后对数据进行清洗,最后加载到Hive中。 在本地新建一个数据集文…

解决vscode中html部分无法嵌套注释

不管是React项目还是Vue项目,相信你一定遇到过同样的问题,如果想要注释的结构内部也存在注释,那么编译器会报以下问题 使用 HTML-Comment 这个插件即可解决问题 选中需要注释的区域并根据系统输入快捷键,可以发现就算嵌套了注释…

【论文解读】角色动画的一致可控的图像到视频合成

论文:https://arxiv.org/pdf/2311.17117.pdf 代码:https://github.com/HumanAIGC/AnimateAnyone 图片解释:给定参考图像(每组中最左边的图像)的一致且可控的角色动画结果。我们的方法能够对任意角色进行动画处理&#…

人工智能原理复习--不确定推理

文章目录 上一篇不确定推理概述主观Bayes(贝叶斯)方法可信度方法证据理论下一篇 上一篇 人工智能原理复习–确定性推理 不确定推理概述 常识具有不确定性。 常识往往对环境有极强的依存性。 其中已知事实和知识是构成推理的两个基本要素,不确定性可以理解为在缺…

Makefile初学之谜之隐式规则

刚开始学习Make教程:https://makefiletutorial.vercel.app/#/docs/fancy-rules,里面有个sample: objects foo.o bar.o all.o all: $(objects)# These files compile via implicit rules foo.o: foo.c bar.o: bar.c all.o: all.call.c:echo "int…

python--自动化办公(Word)

python自动化办公之—Word python-docx库 1、安装python-docx库 pip install python-docx2、基本语法 1、打开文档 document Document() 2、加入标题 document.add_heading(总标题,0) document.add_heading(⼀级标题,1) document.add_heading(⼆级标题,2) 3、添加文本 para…

Spring IOC—基于XML配置和管理Bean 万字详解(通俗易懂)

目录 一、前言 二、通过类型来获取Bean 0.总述(重要) : 1.基本介绍 : 2.应用实例 : 三、通过指定构造器为Bean注入属性 1.基本介绍 : 2.应用实例 : 四、通过p命名空间为Bean注入属性 1.基本介绍 : 2.应用实例 : 五、通过ref引用实现Bean的相…

手机也能“敲”代码?

除了PC个人电脑外,很多电子产品也可以实现代码的编辑,比如智能手机。现在主流的手机操作系统只有两种,一种是大部分手机厂商选择的安卓系统,另外一种是苹果公司独创的ios操作系统。而Android系统是基于Linux开发的专属于移动设备的…

【Leetcode题单】(01 数组篇)刷题关键点总结03【数组的改变、移动】

【Leetcode题单】(01 数组篇)刷题关键点总结03【数组的改变、移动】(3题) 数组的改变、移动453. 最小操作次数使数组元素相等 Medium665. 非递减数列 Medium283. 移动零 Easy 大家好,这里是新开的LeetCode刷题系列&…

Java数据结构之《构造哈夫曼树》题目

一、前言: 这是怀化学院的:Java数据结构中的一道难度中等(偏难理解)的一道编程题(此方法为博主自己研究,问题基本解决,若有bug欢迎下方评论提出意见,我会第一时间改进代码,谢谢!) 后面其他编程题…

【蓝桥杯】翻硬币

翻硬币 思路&#xff1a; 其实有点贪心的意思&#xff0c;依次比较&#xff0c;不同就1&#xff0c;然后修改自己的字符串和下一个的字符串&#xff0c;再匹配。 #include<iostream> #include<string> using namespace std;string now,res;int main(void) {cin&g…
最新文章