虚拟机与 docker

64 阅读3分钟

使用虚拟机和 docker 都能够有效避免由于开发环境和生产环境不一致所带来的问题...

虚拟机

虚拟机技术(虚拟化技术): 将硬件资源抽象出来,创建多个独立环境的技术

虚拟机:一个完整的操作系统实例

虚拟机管理程序: 负责创建、管理虚拟机,可以直接运行在硬件上,也可以运行在宿主操作系统上

在虚拟机启动时,管理程序为其分配一定的实际物理资源(这些资源由宿主操作系统预留)

当虚拟机内的操作系统或应用程序执行系统调用时,实际上是与虚拟机管理程序进行通信,由管理程序负责将这些操作映射到宿主系统的硬件上,虚拟机管理程序可以通过宿主的系统调用与宿主系统交互,也可以直接访问物理硬件---通过硬件虚拟化技术,cpu 提供新的指令集和执行模式

相对于 docker 的优点: 隔离性强、运行不同的操作系统

缺点: 占用资源大,慢,难迁移--不同机器硬件和网络配置不一样

使用场景: 服务器虚拟化、开发、测试、云计算、容灾备份等

docker

docker 是一个用于自动化部署,运行和管理应用程序的开源工具

docker 使用了一种轻量级的虚拟化技术,将应用程序和依赖打包到一个容器中,而这个容器可以在任何支持容器的地方运行,而无需关心执行系统的差异

容器化:与其他进程隔离(沙盒机制),有独立的文件系统和网络

容器化技术: 使用 linux 的 cgroup 和 namespaces 特性实现;在 Windows 上,使用 windows 容器 和 Hyper-V 容器;Macos 暂不支持容器化,但可以在 Macos 上构建一个轻量的虚拟机,然而基于这个虚拟机进行容器化(官方已提供)

Docker 架构:镜像、容器、仓库、守护进程。

镜像: 用来生成 Docker 容器, 可以是一个可执行文件,也可以是一个配置文件;就好比,镜像一个java类,而容器就是这个类的实例对象

仓库:用于存放 docker 镜像,在构建自己的镜像前可以在仓库中查看是否已存在,或者从仓库在拉取基础镜像,在基础镜像上构建自己镜像

守护进程: 负责管理 Docker 对象(如镜像、容器)的核心组件,它包括多个子系统,如镜像管理,网络管理,文件系统等

dockerfile: 包含一系列命令的文本文件,用于自动构建 Docker 镜像,前端一般使用该文件进行生产部署

Docker compose: 定义和运行多容器 Docker 应用程序的工具;通过一个 YAML 文件来配置应用程序的服务网络、卷等

相对于虚拟机的优点:轻量级;环境一致;易于部署和扩展;资源利用率高

缺点:隔离性一般,不适用于依赖操作系统的程序。

使用场景:微服务架构、持续集成和持续部署、快速敏捷开发等