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

【docker】docker 简介

docker 简介

  • 是什么虚拟化、容器化
  • 案例
  • 为什么要虚拟化、容器化?

是什么虚拟化、容器化

物理机:实际的服务器或者计算机。相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境,有时也称为“寄主”或“宿主”。

虚拟化:是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

容器化:容器化是一种虚拟化技术,又称操作系统层虚拟化(Operating system level virtualization),这种技术将操作系统内核虚拟化,可以允许用户空间软件实例(instances)被分割成几个独立的单元,在内核中运行,而不是只有一个单一实例运行。这个软件实例,也被称为是一个容器(containers)。对每个实例的拥有者与用户来说,他们使用的服务器程序,看起来就像是自己专用的。容器技术是虚拟化的一种。docker 是现今容器技术的事实标准。

案例

举个生活中的例子。

物理机如下,就像一个庄园,独立占用了一块土地,花园都是自己的,其他人无法共享使用。

在这里插入图片描述
虚拟机相当于开发商的一个楼盘,一栋楼一套房子一户人家,共享一块宅基地,共享小区的花园,共享小区的游乐设施。

在这里插入图片描述
容器相当于在 1 个房子里面,开辟出来一个又一个的胶囊公寓,共享这套房子的卫生间、共享厨房、共享 WiFi,只有衣服、电脑等私人物品是你自己的。

在这里插入图片描述

为什么要虚拟化、容器化?

我们从上面的历史发展来看,虚拟化和容器化的最主要目的就是资源隔离,随着资源隔离的实现逐渐也带来了更大的收益。

  • 资源利用率高
    将利用率较低的服务器资源进行整合,用更少硬件资源运行更多业务,降低 IT 支出和运维管理成本。
    比如上图中我们的土地直接复用,使用这块土地的人多了,但是成本还是庄园那块地。

  • 环境标准化
    一次构建,随处执行。实现执行环境的标准化发布,部署和运维。开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 「这段代码在我机器上没问题啊」 这类问题。

  • 资源弹性伸缩
    根据业务情况,动态调整计算、存储、网络等硬件及软件资源。比如遇到双 11 了,把服务扩容 100 个,双 11 过去了, 把扩容的 100 个收回去。

  • 差异化环境提供
    同时提供多套差异化的执行环境,限制环境使用资源。
    比如我的服务一个以来 Ubuntu 操作系统,一个服务依赖 CentOS 操作系统,但是没有预算购买两个物理机,这个时候容器化就能很好的提供多种不同的环境。
    在这里插入图片描述

  • 沙箱安全
    为避免不安全或不稳定软件对系统安全性、稳定性造成影响,可使用虚拟化技术构建虚拟执行环境。
    比如我在容器里面执行 rm -rf /* 不会把整个服务器搞死,也不影响其他人部署的程序使用。

  • 容器对比虚拟机更轻量,启动更快
    传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
    docker 不需要虚拟内核,所以启动可以更快,相当于 windows 的开机时间省去了。

  • 维护和扩展容易
    Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的 官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。比如 docker hub 提供了很多镜像,各个系统的一个命令就可以拿到了,研发也可以自己定制镜像分享给各个产品。


http://www.kler.cn/a/292132.html

相关文章:

  • 利用Blackbox AI让编程更轻松
  • YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11 推理的 C++ 和 Python 实现
  • Hybird和WebView
  • Spring Boot 启动时自动配置 RabbitMQ 交换机、队列和绑定关系
  • Java21和Java8性能优化详细对比
  • CSS基础知识04
  • Windows用户取消共享文件夹密码方法(Method for Windows Users to Cancel Shared Folder Password)
  • Redis 主从复制、切片集群
  • 前端框架有哪些?
  • python正则表达式大全
  • 21.新增管理员页面制作
  • 9月5日复盘日记
  • pytorch计算张量中三维向量的欧式距离
  • WWDG—窗口看门狗
  • Claude的小白入门指南
  • 无人机之摄像头篇
  • Aspose.PDF功能演示:在 C# 中将 JPG 图像合并为 PDF
  • 网络压缩之网络剪枝(network pruning)
  • C#中ArrayList
  • 安卓aosp14上自由窗口划线边框Freeform Caption实战开发-千里马framework实战
  • HttpUtils工具类(三)OKHttpClient使用详细教程
  • vue项目中利用后端接口返回的视频地址获取第一帧作为数据封面展示
  • 【赵渝强老师】大数据主从架构的单点故障
  • HTTPS SEO优势
  • EmguCV学习笔记 VB.Net 第10章 人脸识别
  • elementplus组件库el-tree组件设置默认选中项setCheckKeys不生效