小工具知识网

当前位置: 首页 > 行业知识 > Docker-基础

行业知识

Docker-基础

2026-11-02 17:20:57 来源:互联网转载

Docker

  • ⛅虚拟化&容器化
    • 为什么要虚拟化&容器化
    • ⛅虚拟化实现方式
      • 应用程序执行环境分层
      • 虚拟化常见类别
        • ☃️虚拟机
        • ☃️容器
        • ☃️JVM 之类的虚拟机
        • 常见虚拟化实现
          • ☃️主机虚拟化(虚拟机)实现
          • ☃️容器虚���化实现

            ⛅虚拟化&容器化

            • 物理机: 实际的服务器或者计算机
              • 相对于虚拟机而言的对实体计算机的称呼. 物理机提供给虚拟机以硬件环境, 有时也称为"寄主"或"宿主"
              • 虚拟化: 是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机
                • 在一台计算机上同时运行多个逻辑计算机, 每个逻辑计算机可运行不同的操作系统, 并且应用程序都可以在相互独立的空间内运行而互不影响, 从而显著提高计算机的工作效率
                • 容器化: 容器化是一种虚拟化技术, 又称操作系统层虚拟化(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 提供了很多镜像, 各个系统一个命令就可以拿到了, 研发也可以自己定制镜像分享给各个产品

                      ⛅虚拟化实现方式

                      应用程序执行环境分层

                      • 硬件层: 提供硬件抽象, 包括指令集架构、硬件设备及硬件访问接口(eg: 服务器)
                      • 操作系统层: 提供系统调用接口, 管理硬件资源(eg: linux, windows, ios)
                      • 程序库层: 提供数据结构定义及函数调用接口(eg: main 函数)
                      • 应用程序层: 提供网络服务(eg: qq, tiktok)

                        虚拟化常见类别

                        ☃️虚拟机

                        存在于硬件层和操作系统层间的虚拟化技术. 虚拟机通过"伪造"一个硬件抽象接口, 将一个操作系统以及操作系统层以上的层嫁接到硬件上, 实现和真实物理机几乎一样的功能

                        比如我们在一台 Windows 系统的电脑上使用 Android 虚拟机, 就能够用这台电脑打开 Android 系统上的应用

                        ☃️容器

                        存在于操作系统层和函数库层之间的虚拟化技术. 容器通过"伪造"操作系统的接口, 将函数库层以上的功能置于操作系统上. 以 Docker 为例, 其就是一个基于 Linux 操作系统的 Namespace 和 Cgroup 功能实现的隔离容器, 可以模拟操作系统的功能

                        简单来说, 如果虚拟机是把整个操作系统封装隔离, 从而实现跨平台应用的话, 那么容器则是把一个个应用单独封装隔离, 从而实现跨平台应用. 所以容器体积比虚拟机小很多, 理论上占用资源更少. 容器化就是应用程序级别的虚拟化技术. 容器提供了将应用程序的代码、运行时、系统工具、系统库和配置打包到一个实例中的标准方法. 容器共享一个内核(操作系统),它安装在硬件上

                        ☃️JVM 之类的虚拟机

                        存在于函数库层和应用程序之间的虚拟化技术. Java 虚拟机同样具有跨平台特性, 所谓跨平台特性实际上也就是虚拟化的功劳. 我们知道 Java 语言是调用操作系统函数库的, JVM 就是在应用层与函数库层之间建立一个抽象层, 对下通过不同的版本适应不同的操作系统函数库, 对上提供统一的运行环境交给程序和开发者, 使开发者能够调用不同操作系统的函数库

                        常见虚拟化实现

                        ☃️主机虚拟化(虚拟机)实现

                        主机虚拟化的原理是通过在物理服务器上安装一个虚拟化层来实现. 这个虚拟化层可以在物理服务器和客户操作系统之间建立虚拟机, 使得它们可以独立运行

                        从软件框架的角度上, 根据虚拟化层是直接位于硬件之上还是在一个宿主操作系统之上, 将虚拟化划分为 Type1 和 Type2

                        • Type1 → 直接作用于硬件
                        • Type2 → 通过宿主机作用于硬件

                          Type1 类的 Hypervisor(Hypervisor 是一种系统软件, 它充当计算机硬件和虚拟机之间的中介, 负责有效地分配和利用由各个虚拟机使用的硬件资源, 这些虚拟机在物理主机上单独工作. 因此, Hypervisor 也称为虚拟机管理器)直接运行在硬件之上, 没有宿主机操作系统, Hypervisor 直接控制硬件资源和客户机. 典型框架为 Xen、VmwareESX

                          Type2 类的 Hypervisor 运行在一个宿主机操作系统之上(Vmware Workstation)或者系统里面, Hypervisor 作为宿主机操作系统中的一个应用程序, 客户机就是在宿主机操作系统上的一个进程

                          ☃️容器虚拟化实现

                          容器虚拟化, 有别于主机虚拟化, 是操作系统层的虚拟化. 通过 namespace 进行各程序的隔离, 加上 cgroups 进行资源的控制, 以此来进行虚拟化

上一篇:干货!正确晒干辣椒的实用技巧!

下一篇:轻松获取Potoshaop安装教程,下载指南助你轻松上手!