物理机、虚拟机、容器(docker)技术详解
物理机、虚拟机、容器(docker)技术详解
随着云计算和虚拟化技术的快速发展,物理机、虚拟机和容器成为了现代IT架构中不可或缺的组成部分。本文将深入探讨这三种技术的区别和应用场景,帮助读者更好地理解它们的特点和优势。
一、物理机
物理机又叫作独立服务器,可以理解为在机房中独立运行的、具有完整操作系统的计算机设备。按照架构来区别可分为X86服务器和非X86服务器,其中非X86服务器以ARM架构处理器为主导。按照操作系统来区别可以分为Linux、Windows、Unix、macOS等。
其中因为免费开源且稳定耐用的优点,Linux服务器现在基本成为运行软件服务的首选。常见的Linux服务器的系统主要包括debian系(debian、ubantu)、redhat系(redhat、centos)、suse、麒麟、欧拉等。
物理机的优点如下:
- 物理机是直接运行在硬件上的,相比与虚拟机少了虚拟层的开销,在一定工作负载下性能会更高;
- 物理机可以直接访问所有的硬件资源;
- 物理机更为稳定和安全;
二、虚拟机
因为物理机通常只能运行一个操作系统,无法充分利用硬件资源;同时不同的应用程序所依赖的运行环境也不一定一样,可能会出现兼容性或端口冲突等问题。为了解决这些问题,同时也降低企业采购、设置、散热和维护的成本,虚拟化的技术得到广泛应用。
什么是虚拟机呢?用官方的术语来说,虚拟机(VM)是一种计算环境,会模拟出自己的整套硬件,包括 CPU、内存、网络接口和存储器,通常用于充当隔离系统。运行虚拟机的物理机被称为主机。使用其资源的诸多虚拟机被称为虚拟客户机。虚拟机监控程序(Hypervisor )会将 CPU、内存和存储等计算资源视为一个资源池,从而可以轻松地在现有客户机之间或者向新的虚拟机动态分配这些资源。
在一台物理机上安装了一个操作系统,比如说是redhat的操作系统,在这个物理机上或者是在这个redhat的操作系统上又运行了一个程序,这个程序叫做虚拟机监控程序,这个虚拟机监控程序动态的将硬件资源分成了多个虚拟环境,每一个虚拟环境都相当于一个独立服务器,每一个服务器又可以安装不同的操作系统,比如说centos、麒麟等,在不同的操作系统上又配置不同的运行环境来运行不同的服务。
目前常见的虚拟机软件有VMware Worstation、VirtualBox、KVM、QEMU等。
虚拟机相较于物理机的优缺点如下:
优点:
- 一台物理机上可以运行多台虚拟机,每一个虚拟机又可以运行不同的操作系统和应用程序,极大的提高了硬件资源的利用率;
- 虚拟机可以快速创建、销毁。备份、迁移,方便进行系统备份、恢复和迁移;
- 虚拟机可以动态调整资源配置,比如说增加 CPU、内存、磁盘空间等,以满足不同应用程序的需求;
缺点:
- 虚拟机需要虚拟化层的支持,这会引入一定的性能开销,可能会导致性能下降;
- 多个虚拟机共享物理服务器的硬件资源,可能会导致资源竞争和性能瓶颈;
- 虚拟机之间虽然相互隔离,但如果虚拟化层存在漏洞,可能会导致整个系统受到攻击;
三、容器
虚拟机技术虽然做到了在同一个宿主机中提供不同的运行环境,既解决了硬件层面的硬件资源共享问题也为不同软件的运行提供了不同运行环境,但是运行虚拟机监控程序却会造成巨大的资源消耗。同时也有可能出现环境迁移报错的问题。比如说工作以后应该都有遇到过开发环境迁移到测试环境,jar包却无法运行,后面排查出是jdk版本不一致导致的;也应该有遇到过测试环境迁移到生产环境时,因为操作系统不一致而导致适配性出了问题吧;
所以拥有着轻量级、快速启动、高度可移植性等优势的容器(如Docker),作为一种新兴的虚拟化技术,正不断地引领着应用部署的新潮流;
容器是在操作系统层面上,对所需的各类资源进行了隔离,它是一种基于进程级隔离的轻量级虚拟化技术;容器与容器之间可以共享操作系统的内核、执行文件、库等,所以说一个物理机可以仅安装一个操作系统便可以运行多个容器;
目前应用的比较广泛的容器主要包括Docker、Containerd、CRI-O等;
其中Docker是一种开源的容器化平台,采用的是Client-Server架构,采用远程Api来管理和创建容器,其中Docker Daemon负责管理容器生命周期、镜像构建和网络等功能,而Docker CLI则作为与Daemon进行交互的命令行工具。Docker可以帮助开发人员和运维团队更轻松地创建、部署和运行应用程序。
容器相较于虚拟机的优缺点如下:
优点:
- 容器通过共享宿主机的操作系统的内核、执行文件、库,避免了虚拟机重复加载多个操作系统内核的开销,使得其资源消耗更少,也更加高效;
- 容器在启动时,只需加载应用程序及其依赖项,所以可以快速启动,几秒时间即可;
- 容器具有高度的可移植性,可以轻松地在不同的操作系统、云平台或物理机上迁移,当然前提是可以支持运行使用的容器;
缺点:
- 虚拟机是完全隔离性的,这种隔离性确保了不同虚拟机之间的资源、网络和存储不会相互影响,而容器却是共享宿主机资源的,所以在一些需要确保安全的场合,虚拟机更具优势;
- 在一些特殊场景,比如说需要运行不同的操作系统或者是特定的应用需求下,选择虚拟机可能是一个更好的选择;
四、总结
传统物理机、虚拟机、容器之间都有自己的优缺点,如何根据系统架构正确的选择或者结合他们才是最明智的选择。在实际应用中,可以根据具体需求和场景,灵活选择适合的技术方案,以实现最佳的性能、安全性和资源利用率。