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

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.kler.cn/a/155542.html

相关文章:

  • 系统架构设计师论文
  • vue2或vue3的name属性有什么作用?
  • 【Vue】Vue3.0(二十一)Vue 3.0中 的$event使用示例
  • vue el-date-picker 日期选择器禁用失效问题
  • AI生活之我用AI处理Excel表格
  • 数学建模模型算法-Python实现
  • Python安装步骤介绍
  • LeetCode 每日一题 Day1
  • 软件工程导论学习资料
  • 7.24 SpringBoot项目实战【审核评论】
  • 音乐播放器Swinsian mac功能介绍
  • 提权(2), Netcat反弹shell
  • html页面多个视频标签时设定只能播放一个视频
  • 视频智能分析国标GB28181云平台EasyCVR加密机授权异常是什么原因?
  • Java数据结构 之 包装类简单认识泛类
  • 操作系统进程与线程篇
  • 【Unity动画】什么是动画蒙版(Avatar Mask)
  • 【面试经典 150 | 二分查找】搜索插入位置
  • 【STL】手撕 string类
  • Python练习题(二)
  • re:Invent 构建未来:云计算生成式 AI 诞生科技新局面
  • IO_D3(231205)
  • Python datetime 字符串 相互转 datetime
  • C#网络编程System.Net.WebClient 类vs System.Net.Http.HttpClient 类
  • windows下docker环境搭建与运行实战
  • UCore-OS实验Lab0