Docker(一):什么是Docker?

简介: Docker(一):什么是Docker?

为什么会出现Docker

假设你在开发一个项目,你所用的电脑是具备了项目特定配置的开发环境。但其他开发人员的设备以及开发环境配置都各有不同。你所在开发的应用需要依赖你当前的配置,而当你需要发布到测试环境的时候,你需要把你本地的环境配置,在测试环境也配置一遍。那如果有灰度环境呢,又或者说发布到生产环境呢?那你又是如何保证这些环境配置,每次都能够顺利完成部署,而不是重复捣腾,并且在部署过程不出现令人头疼的版本问题,配置问题,还有就是常说的 ”明明我本地是可以的,为什么发布上去就这么多问题?”


综上所述,使用容器化技术可以得以解决。容器化技术解决了运行环境和配置问题,方便做持续集成并有助于整体发布的容器虚拟化技术。


什么是Docker

Docker是基于Linux内核实现的,在Linux容器技术的基础上发展过来的(因此我们安装Docker要基于虚拟机上运行,Windows系统要安装Hyper-V 虚拟机特性)。将应用打包成镜像,通过镜像成为运行在Docker容器上的实例,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台,跨服务器。只需要配置好一个环境,其他服务器上就可以一键部署,从而提升了部署效率,简化了操作。


Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使得用户的应用及运行环境可以做到"一个镜像,随时随地构建、发布和运行"。


Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案----> "系统平滑移值,容器虚拟化技术"。


image.png


容器VS虚拟机比较

虚拟机是带环境安装的一种解决方案,它可以在操作系统里面运行另一个操作系统,例如在windows系统里面运行Linux系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对底层系统来说,虚拟机就是一个普通文件,不需要就删了,对其他部分毫无影响。传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统(如:vmware等),创建虚拟机(虚拟出各种硬件),在虚拟机上安装从操作系统,再从操作系统中安装部署各种应用。(虚拟机的缺点:1、资源占用多;2、冗余步骤多;3、启动慢)


由于虚拟机存在某些缺点,Linux发展出了另一种虚拟化技术:Linux容器(Linux Containers,缩写为 LXC)。Linux容器是与系统其它部分分隔开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。Linux容器不是模拟一个完整的操作系统而是对进程进行了隔离,有了容器就可以将应用允许所需要的资源打包到一个隔离容器中。容器与虚拟机不同,容器不需要捆绑一整套操作系统,只需要软件工作所需的资源和配置,系统因此变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。


Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现为启动速度快,占用体积小。


image.png


比较了 Docker 和传统虚拟化方式的不同之处:


1、传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。


2、容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。


3、每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。


Docker官网 Docker: Accelerated, Containerized Application Development

相关文章
|
存储 安全 Java
ArrayList源码全面解析
ArrayList源码全面解析
|
小程序 JavaScript
小程序bindtap 和 catchtap 的区别以及如何使用
小程序bindtap 和 catchtap 的区别以及如何使用
504 0
|
SQL 存储 关系型数据库
【MySQL学习笔记】系列三:演示使用MySQL、介绍图形化管理工具、MySQL的目录结构与源码(二)
【MySQL学习笔记】系列三:演示使用MySQL、介绍图形化管理工具、MySQL的目录结构与源码(二)
|
5月前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL下载与安装
本文介绍了MySQL的下载与安装流程(2025.4.29,作者:blue)。主要内容包括:1) 从官方地址下载MySQL;2) 解压文件并配置环境变量;3) 注册MySQL服务并通过命令行验证;4) 启动和停止MySQL服务;5) 修改默认账户密码;6) 登录MySQL。通过详细步骤和截图,帮助用户顺利完成安装与初始配置。
830 13
|
存储 关系型数据库 MySQL
[重磅更新]PolarDB-X V2.3 集中式和分布式一体化开源发布
2023年云栖大会,PolarDB-X 正式发布 2.3.0版本,重点推出PolarDB-X标准版(集中式形态),将PolarDB-X分布式中的DN节点提供单独服务,支持paxos协议的多副本模式、lizard分布式事务引擎,可以100%兼容MySQL。同时在性能场景上,采用生产级部署和参数(开启双1 + Paxos多副本强同步),相比于开源MySQL 8.0.34,PolarDB-X在读写混合场景上有30~40%的性能提升,可以作为开源MySQL的最佳替代选择。
|
存储 NoSQL Redis
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
程序技术好文:等额本息PMT和PPMT推导计算公式
程序技术好文:等额本息PMT和PPMT推导计算公式
250 0
|
小程序 JavaScript Java
购物|电商购物小程序|基于微信小程序的购物系统设计与实现(源码+数据库+文档)
购物|电商购物小程序|基于微信小程序的购物系统设计与实现(源码+数据库+文档)
295 0
ICP年检还有几天就截止了
2023年ICP经营许可证年检时间马上结束了,抓紧最后时间
476 0
ICP年检还有几天就截止了
|
NoSQL Java Redis
Spring boot 实现监听 Redis key 失效事件
【2月更文挑战第2天】 Spring boot 实现监听 Redis key 失效事件
1149 0