Docker:解决开发运维问题的开源容器化平台

devtools/2024/9/24 9:19:09/

云计算de小白

Docker是一个开源的容器化平台,可以将应用程序及其依赖的环境打包成轻量级、可移植的容器。

Docker为什么这么受欢迎呢?原因很简单:Docker可以解决不同环境一致运行的问题,而且占用资源少,速度快。

所以好的东西应该被更多人喜欢,因为Docker确实解决了我们日常的开发和运维问题。

例如:在如今的微服务架构中,我们可以将应用程序拆分成多个独立的服务,每个服务都运行在独立的容器中。

这不仅方便了开发、测试和部署,还可以让Docker容器在不同的操作系统和平台上运行,确保跨平台的一致性。

图片

图片

多个容器可以在同一台器上运行并与其他容器共享其操作系统内核,每个容器作为用户空间中的独立进程运行。

虚拟

虚拟,全称是Virtual Machine,缩写为“虚拟VM”。

虚拟是一种通过软件模拟出来的计算系统,可以在物理硬件上运行多台虚拟的计算

如下图所示:

图片

图片

虚拟是运行在物理(宿主)上的独立计算环境,具有独立的操作系统、应用程序和资源。

例如:一台服务器可以模拟多台“虚拟”。

此时虚拟运行在物理主上,其硬件资源(如CPU、内存、磁盘等)由主提供并虚拟化。

虚拟管理工具,常见的有:VMware、Hyper-V...等,主要用于创建/和管理虚拟

虽然看上去多了几台“服务器”,但多台虚拟操作系统却共存并运行在同一个硬件环境中。

虚拟和容器虽然都是虚拟化技术,但是操作方式和用途都不一样,我重点说一下两者的区别。@mikechen

Docker 与虚拟之间的区别

图片

图片

虚拟较重,Docker 相对较轻

这就是Docker与虚拟最大的区别,我把它放在第一位。

首先,虚拟提供了完整的操作系统和硬件环境,适合需要隔离的多操作系统环境。

虚拟非常重要,因为每个虚拟都需要搭载完整的操作系统(OS)。

因此当使用虚拟时,即使应用程序本身很小,但是由于操作系统的存在,整体的体积也会变得庞大。

因此这使得虚拟不仅占用大量的存储空间,而且在启动时需要加载整个操作系统,导致启动时间较长、运行过程中资源占用较高。

这也是Docker虚拟化技术如此受欢迎的最重要的原因。

Docker 通过共享主操作系统的内核来避免为每个应用程序分配单独的操作系统。

这样,每个Docker容器只包含:应用程序及其依赖项,减少了镜像的大小,并且启动更快,运行更​​轻量。

这也是Docker相较于虚拟的最大优势之一,在微服务和容器化应用场景下尤其有效。

虚拟启动慢,Docker启动快

刚才讲了这两者最大的区别,就是虚拟需要搭载操作系统(OS)。

因此虚拟启动时间较长是正常的,因为:虚拟需要启动一个完整的操作系统。

Docker容器不需要启动操作系统,因此响应速度更快。

虚拟占用资源较多,Docker占用资源较少

由于虚拟需要运行独立的操作系统,所以资源开销比较大。

例如:虚拟需要占用较多的CPU、内存、磁盘空间,并且每个虚拟都有固定的资源分配。

因此一台服务器一般无法虚拟出很多台“服务器”。

另一方面,Docker 容器共享主操作系统内核,不需要额外的操作系统开销。

因此它占用的资源较少,且处于“进程”级别,所以资源利用率较高。

虚拟适合重量级隔离,容器是轻量级隔离

当然,说了这么多,并不是说虚拟没用,关键还是要用在合适的应用场景上。

例如,虚拟适用于需要强隔离的多操作系统环境,经常被用来运行不同的操作系统、测试环境,或者对安全性有较高要求的场景。

Docker容器比较适合:微服务架构、持续集成与交付(CI/CD)、高密度部署、轻量隔离场景。


http://www.ppmy.cn/devtools/116424.html

相关文章

PostgreSQL 容器安装

使用Docker安装PostgreSQL(通常简称为PgSQL)容器的步骤相对直接且简单。以下是一个详细的步骤指南,帮助你通过Docker安装并运行PostgreSQL容器: 1. 安装Docker 首先,确保系统上已经安装了Docker。可以通过访问Docker…

《深度学习》卷积神经网络CNN 实现手写数字识别

目录 一、卷积神经网络CNN 1、什么是CNN 2、核心 3、构造 二、案例实现 1、下载训练集、测试集 代码实现如下: 2、展示部分图片 运行结果: 3、图片打包 运行结果: 4、判断当前使用的CPU还是GPU 5、定义卷积神经网络 运行结果&a…

Vue3教程 - 2 开发环境搭建

更好的阅读体验:点这里 ( www.foooor.com ) 2 开发环境搭建 要进行 Vue 开发,需要安装 Node.js,因为构建 Vue 项目的工具,例如 Webpack、Vite等,这些工具依赖于Node.js环境来运行。 Node.js…

当电子设计竞赛照进生活!

参加过电子设计竞赛的同学都懂,四天三夜,有时候会熬夜,有时候会加班, 电子的灵异事件,有时候是好的,有时候是坏的,这就很怪好嘛 按理说,代码写的也没问题啊 为什么还是会那样&…

【FPGA开发】比特文件的压缩

压缩比特文件介绍 对于FPGA而言,比特文件包含了FPGA芯片的配置信息,也是我们一般意义上下载进FPGA的“程序”,压缩比特文件是一种优化FPGA配置文件大小和提高配置效率的方法,特别对于一些复杂的设计以及一些芯片而言,如…

uni-app快速入门

目录 一、什么是 uni-app二、快速创建 uni-app 项目1.创建 uni-app2.运行 uni-app 三、uni-app 相对传统 H5 的变化1.网络模型的变化2.文件类型变化3.文件内代码架构的变化4.外部文件引用方式变化5.组件/标签的变化6.js的变化(1)运行环境从浏览器变成v8引…

关于Mysql数据库的日常维护,包括配置、优化、备份、故障处理等工作的50道运维面试题

配置相关 1. 如何查看MySQL服务器的配置信息? 要查看MySQL服务器的配置信息,可以使用以下几种方法: 1. 使用 SHOW VARIABLES 命令 这个命令会显示当前MySQL会话的所有系统变量及其值。 SHOW VARIABLES;如果你只对某些特定的变量感兴趣&a…

【网站架构部署与优化】源码编译安装LAMP

文章目录 LAMP架构概述各组件的主要作用构建LAMP平台的安装顺序 编译安装Apache httpd服务指南1. 准备工作1.1 关闭防火墙并传输软件包1.2 安装环境依赖包 2. 配置软件模块2.1 解压软件包2.2 移动apr组件包2.3 配置httpd 3. 编译及安装4. 优化配置4.1 配置文件路径4.2 添加http…