Docker

Docker是一种操作系统级别的虚拟化技术,解决了环境配置问题,提供了快速部署、隔离性好、成本低等优势。与虚拟机相比,Docker启动速度快、占用资源少,适用于多服务共存的场景。然而,其隔离性和性能相对有限,且存在存储方案的挑战。

一、Docker是什么

Doceker是一种操作系统层面的虚拟化技术,可以在操作系统和应用程序之间进行隔离,也称之为容器。Docker可以在一台物理服务器上快速运行一个或多个实例,例如,启动一个Cent OS操作系统,并在其内部命令执行指令后结束,整个过程就像自己在操作系统一样

二、Docker解决的问题

 主要解决环境配置问题,是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用Docker可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其它机器上

三、Docker与虚拟机比较

虚拟机也是一种虚拟化技术,它与Docker最大的区别在于它是通过模拟硬件,并在硬件上装操作系统来实现的

1、启动速度

启动虚拟机需要先启动虚拟机的操作系统,再启动应用,这个过程非常慢;而启动Docker相当于启动宿主操作系统上的一个进程

2、占用资源

虚拟机是一个完整的操作系统,需要占用大量的磁盘、内存和CPU资源,一台机器只能开启几十个虚拟机,而Docker只是一个进程,只需要将应用以及相关的组件打包,在运行时占用很少的资源,一台机器可以开启成千上万个Docker

3、镜像与容器

镜像是一种静态的结构,可以看成面向对象里的类,而容器是镜像的一个实例。镜像包含着容器运行时所需要的代码以及其它组件,它是一种分层结构,每一层都是只读的。构建镜像时,会一层一层构建,前一层是最后一层的基础。镜像的这种分层存储结构很适合镜像的复用以及定制。构建容器时,通过在镜像的基础上添加一个可写层,用来保存着容器运行过程中的修改

4、优点

(1)部署方便

不需要再花费几个小时搭建环境,有了容器我们的开发环境就只是一个或者几个容器镜像的地址,最多再需要一个控制部署流程的执行脚本。或者进一步将自己的环境镜像以及镜像脚本放入一个git项目,发不到云端,需要的时候将它拉到本地就可以了

(2)部署安全

在开发过程中我们本地代码可以正常运行但是不能保证代码到其它环境也能正常运行,需要花费时间去定位bug,但是有了容器之后这就很少发生。我们通过容器技术将开发环境和测试环境以及生产环境保持版本和依赖上的统一,保证代码在一个高度统一的环境上执行。而测试环境的统一,也同样能解决CI流程对环境的要求。分布式技术和扩容需求日益增长的今天,如果运维能够使用容器技术来进行环境的部署,不仅仅在部署时间上节省不少,也能把很多因为人工配置环境产生的失误降到最低

(3)隔离性好

不管是开发环境还是生产,往往我们一台机器上可能需要跑多个服务,而服务各自需要的依赖配置不尽相同,假如说两个应用需要使用同一个依赖,或者两个应用需要的依赖之间会有一些冲突,这个时候就很容易出现问题了。所以同一台服务器上不同应用提供的不同服务最好是将其隔离起来。而容器在这方面有天生的优势,每一个容器就是一个隔离,你对容器内部提供服务的要求,容器可以自依赖的全部提供。这种高内举的表现可以实现快速的分离有问题的服务,在一些复杂系统中能实现快速排错和及时处理。(注:这个隔离性只是相对于服务器比较的,虚机技术要拥有更好的隔离性)

(4)快速回滚

容器之前的回滚机制,一般需要基于上个版本的应用重新部署,且替换掉目前的问题版本,在最初的时代,可能是一套完整的开发到部署的流程,而执行这一套流程往往需要很长的时间。在基于git的环境中,可能是回退某个历史提交,然后重新部署,这些跟容器技术相比都不够快,而且可能会引起新的问题(因为是基于新版本的修改)。而容器技术天生带有回滚属性,因为每个历史容器或者镜像都会保存,而替换一个容器或者某个历史镜像是非常快速和简单的。

(5)成本低(最明显和有用的优点)

在容器出现之前,我们往往构建一个应用就需要一台新的服务器或者一台虚拟机。服务器的购置成本和运维成本都很高,而虚拟机需要占用很多不必要的资源。相比之下,容器技术就小巧轻便的多,只需要给一个容器内部构建应用需要的依赖就可以了,这也是容器技术发展迅速的最主要原因

(6)管理成本低

随着容器技术的不断普及和发展,随之而来的容器管理和编排技术也同样得到发展。诸如Docker Swarm,Kubernetes, Mesos等编排工具也在不断的迭代更新,这让容器技术在生产环境中拥有了更多的可能性和更大的发挥空间。而随着大环境的发展,docker等容器的使用和学习的成本也是愈发降低,成为更多开发者和企业的选择

5、缺点

(1)隔离性

(2)性能

(2)存储方案

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值