容器技术-Docker的优点

news2024/9/22 7:41:14

当产品运行在内部的虚拟化平台中,如openstack,也就是KVM虚拟化,创建虚拟机,但是不断增加的云端应用,增加了对硬件资源的消耗,不断的创建虚拟机,消耗了大量的硬件资源。

那么如何高效的利用硬件资源实现云服务呢

容器技术,Docker最初是DotCloud公司在法国期间发起的一个公司内部项目,后再以Apache2.0授权协议开源,代码在Github上维护,Docker是基于Google公司推出的Golang语言开发的,基于Linux内核的Cgroups、NameSpace,以及UnionFS等技术对进程进行封装隔离,属于操作系统层面的虚拟化技术由于隔离的进程独立于宿主机和其他隔离的进程,也被称为容器。
在这里插入图片描述
最初的Docker是基于LXC的,后来取出LXC转而使用自行开发的Libcontainer。
Docker被定义为为开源的容器引擎,可以方便的对容器进行管理,例如对镜像打包封装,引入Docker Registry对镜像统一管理。使用Docker就是为了创建容器,管理容器、使用容器、删除容器。
利用Docker可以实现开发,测试、生产环境的部署一致性,极大的减少运维成本。

容器和虚拟机的差异

传统虚拟机技术

虚拟机是虚拟出来一套硬件,在其上面运行一个完整的操作系统,例如我们使用的KVM,指定系统镜像,然后装系统,最终可以使用,在该系统上再运行所需的应用程序。
KVM创建虚拟机时,如果指定较少的CPU,内存,硬盘等资源,虚拟机性能较低。
在这里插入图片描述

容器技术

**容器内的应用程序直接运行在宿主机的内核上,容器内没有自己的内核,也没有对硬件进行虚拟,因此容器比虚拟机更为轻便。**容器内的程序,就好比直接运行在宿主机上面的,能够使用宿主机最大的硬件资源,内存、cpu、磁盘。每个进程是互相隔离的,互不影响。
在这里插入图片描述

在这里插入图片描述

容器对比KVM的好处

  • 容器能够提供宿主机性能,而KVM虚拟机是分配宿主机硬件资源,性能较弱。
  • 同样配置的宿主机,最多可以启动10个虚拟机的化,可以启动100+的容器数量。 启动一个KVM虚拟机,得有一个完整的开机流程,花费时间较长,或许得20s,而启动一个容器只需要1s。
  • KVM需要硬件CPU的虚拟化支持,而容器不需要。
为什么选择Docker
docker更高效的利用系统资源

容器不需要硬件虚拟化以及运行一个完整操作系统的额外开销,docker对系统资源的利用率更高,无论是应用执行,文件存储,还是在内存消耗等方面,都比传统虚拟机更高效,因此一个同样配置的主机,可以运行更多数量的容器示例。

更快的启动时间

传统的虚拟机启动时间较久,docker容器直接运行在宿主机的内核上,无须启动一个完整的操作系统,因此可以达到秒级启动,大大的解决开发、测试、部署的时间。

一致性的环境

在企业里,程序从开发环境,到测试环境,到生产环境,难以保证机器环境的一致性,极大的可能出现系统依赖冲突,导致难以部署等bug。
然而利用docker的容器-镜像技术,提供了除内核以外完整的运行环境,确保了应用环境的一致性。

持续交付和部署

对于开发和运维人员最希望的就是迁移部署别出问题,利用docker可以定制镜像,以达到持续集成,持续交付和部署。
利用Dockerfile来进行镜像构建,实现系统集成测试,运维进行生产环境的部署。

轻松的迁移

Docker可以在很多平台运行,无论是物理机,虚拟机,云服务器等环境,运行结果都是一致的,可以轻松的将一个平台的应用,迁移到另一个平台,而不用担心环境的变化,导致程序无法运行。

Docker能做什么

可以把应用程序代码及运行依赖环境打包成镜像,做为交付介质,在各环境部署
可以将镜像(image)启动成为容器(container),并且提供多容器的生命周期进行管理(启、停、删)
container容器之间相互隔离,且每个容器可以设置资源限额
提供轻量级虚拟化功能,容器就是在宿主机中的一个个的虚拟的空间,彼此相互隔离,完全独立、

当Docker容器多的时候,需要工具去编排管理,这个就是k8s。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022美亚个人赛复盘

个人赛加密容器解密密钥 CZDGm#&2_Ns$7wSMn%ZGr7xntcHS7d5uFta#Up9544jx_cvP$uFM7?pTDa*jN&QyFDLS8U%hx$fXN^BY$Xsj3F^y#4QFXb*UqwLmkCE7?&YpnX6shKrzpVE%v?& 案件详情 于2022年10月,有市民因接获伪冒快递公司的电邮,不慎地于匪徒…

激光雷达Velodyne16配置及录制rosbag

激光雷达Velodyne16配置一、配置IP二、安装ROS依赖三、创建工作空间四、录制bag数据包硬件准备:连接电源线及网线一、配置IP 1.设置有线的IP地址 设置->网络->有线连接->IPV4->手动 地址: 192.168.8.70 掩码: 255.255.255.0 网关…

力扣刷题(代码回忆录)——二叉树部分

关于二叉树,你该了解这些!二叉树:二叉树的递归遍历二叉树:二叉树的迭代遍历二叉树:二叉树的统一迭代法二叉树:二叉树的层序遍历二叉树:翻转二叉树本周小结!(二叉树&#…

Vue知识点整理(待更新)

Vue知识点整理(待更新) 参考Vue.js中文官网,Vue 知识点汇总(上)–附案例代码及项目地址,Vue 知识点汇总(下)–附案例代码及项目地址,Vue知识点汇总【持更】 文章目录Vue…

【Redis】Redis的持久化

目录 传统数据库事务的ACID Redis的持久化方案 持久化配置 ①纯内存运行 ②RDB模式 优缺点 临时文件 触发RDB规则的情况 如何恢复数据 ③AOF模式 日志文件 优缺点 传统数据库事务的ACID Redis的持久化方案 ①在一定时间内,命令执行次数达到一定上限时&a…

【SQL】索引失效的11种情况

【SQL】索引失效的11种情况索引失效案例【1】. 全值匹配【2】. 最佳左前缀法则【3】. 主键插入顺序【4】. 计算、函数、类型转换(自动或手动)导致索引失效【5】. 类型转换导致索引失效【6】. 范围条件右边的列索引失效【7】. 不等于(! 或者<>)索引失效【8】. is null可以…

如何在openstack环境下实现高性能的网络服务

大家晚上好。那我们开始吧。主要还是抛装引玉&#xff0c;互相学习交流。今天和大家分享下面一些内容&#xff1a; 1.关于openstack中VNF网络性能的一些思考和思路 2.相关的开源项目 3.OVS 2.4 DPDK with IVSHMEM/vHost-user(w/DPDK) 和vHost (w/oDPDK)性能测试数据 4.后续可以…

3.55 OrCAD中怎么批量修改属性值字体的大小?OrCAD的Occurrence属性与Instance属性是什么含义?

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

[附源码]java毕业设计疫情防控下高校教职工健康信息管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

TypeScript(五)知识扩展

TypeScript TypeScript模块化 JavaScript 有一个很长的处理模块化代码的历史&#xff0c;TypeScript 从 2012 年开始跟进&#xff0c;现在已经实现支持了很多格式。但是随着 时间流逝&#xff0c;社区和 JavaScript 规范已经使用为名为 ES Module的格式&#xff0c;这也就是我…

【Mysql】表的增删查改

文章目录前言一.表中插入数据1.1 全列增加1.2 指定列增加1.3 一次性插入多行数据1.4. 插入查询结果二.表的更新和替换2.1. 表的插入更新2.2. 替换三.表的查询3.1. 全列查询3.2. 指定列查询3.3. 查询字段为表达式并取别名3.4. 结果去重3.4. where条件3.5. 结果排序3.6. 分页查询…

【正点原子FPGA连载】第九章 按键控制LED实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第九章 按键控制…

骨传导耳机是怎么传声的?骨传导耳机到底有哪些好处?

骨传导耳机最近在网上也是越来越火了&#xff0c;作为一种可以开放双耳的耳机&#xff0c;对比一般的耳机&#xff0c;它可以做到开放双耳&#xff0c;不堵耳道&#xff0c;保持耳朵健康卫生。 但是随着这种耳机的逐渐崛起&#xff0c;很多人也对这种耳机产生了疑惑&#xff1…

正版软件|WonderFox Photo Watermark 图片水印批量处理软件

Photo Watermark 可以为您做什么&#xff1f;水印是最有效的方法&#xff0c;可防止他人擅自使用您的照片。只需单击几下&#xff0c;Watermark Software 将为您的图像文件提供不可磨灭的保护。 可自定义的水印 文本水印 只需按键即可创建支持丰富字体&#xff0c;符号&#x…

Redis进阶(主从复制、Redis集群、缓存穿透、缓存击穿、缓存雪崩)

目录 1、主从复制&#xff08;读写分离&#xff09; 1.1、什么是主从复制 1.2、主从复制的作用 1.3、环境搭建 1.4、一主二仆 1.5、注意事项 1.6、反客为主 1.7、哨兵模式&#xff08;sentinel&#xff09; 2、Redis集群 2.1、什么是集群 2.2、什么是redis集群 2.3…

报表工具使用之FineReport大数据集导出插件

1. 概述 1.1 版本 报表服务器版本 插件版本 功能变更 11.0 V1.0.0 - 11.0.10 V1.1.16 1&#xff09;插件名称变更为&#xff1a;大数据集导出插件 2&#xff09;支持导出为 CSV 类型文件 1.2 应用场景 大批量数据导出的时候&#xff0c;会对服务器、网络传输、数据库…

Python eval()函数详解

一、eval()函数 用来执行一个字符串表达式&#xff0c;并返回表达式的值。可以把字符串转化为list,dict ,tuple。 二、eval()函数源码 三、eval()函数语法 eval(*args, **kwargs) 说明&#xff1a; expression -- 表达式。globals -- 变量作用域&#xff0c;全局命名空间&…

设计模式之美——单元测试和代码可测性

最可落地执行、最有效的保证重构不出错的手段应该就是单元测试&#xff08;Unit Testing&#xff09;。 什么是单元测试&#xff1f; 单元测试由研发工程师自己来编写&#xff0c;用来测试自己写的代码的正确性。我们常常将它跟集成测试放到一块来对比。单元测试相对于集成测…

【PyTorch】Torchvision Models

文章目录六、Torchvision Models1、VGG1.1 add1.2 modify2、Save and Load2.1 模型结构 模型参数2.2 模型参数&#xff08;官方推荐&#xff09;2.3 Trap六、Torchvision Models 1、VGG VGG参考文档&#xff1a;https://pytorch.org/vision/stable/models/vgg.html 以VGG16为…

apache-atlas-hbase-hook源码分析

元数据类型 Hbase元数据类型, 包括命令空间、表、列族、列 public enum HBaseDataTypes {// ClassesHBASE_NAMESPACE,HBASE_TABLE,HBASE_COLUMN_FAMILY,HBASE_COLUMN;public String getName() {return name().toLowerCase();} }Hbase元数据采集实现 1&#xff09;批量采集HBa…