Docker处理的首要问题
有过后台开发经历的同学,必定遇到过下面这些问题:
程序在开发环境跑得好好的,可是布置到出产环境,却情况频出;
假定某个程序要在客户的环境进步行布置,虽然在自己的环境上布置、验证成功,但一直忧虑客户的环境上短少某些必要的库文件,或许某些文件的版别不符合要求;
那么,有了docker,这些问题都将不复存在。
什么是Docker
Docker是一个虚拟环境容器,能够将你的可执行文件、配置文件及全部其他你需求的文件同时打包到这个容器中,并发布和使用到恣意渠道。比方,你在本地用Python开发了一个网站后台,开发测验完成后,就能够将Python3及其依靠包、Flask及其各种插件、Mysql、Nginx等打包到一个容器中,然后布置到恣意你想布置到的环境。
假如欠好了解,咱们再拿集装箱打个比方。
集装箱处理了什么问题呢?在一艘大船上,能够把货品规整的摆放起来。而且各式各样的货品被集装箱规范化了,集装箱和集装箱之间不会彼此影响。那么我就不需求专门运送生果的船和专门运送化学品的船了。只需这些货品在集装箱里封装的好好的,那我就能够用一艘大船把他们都运走。
docker也是相似的理念。咱们能够在一台机器上跑多个彼此毫无相关的docker容器,每一个容器就相当于一个集装箱。
Docker里的几个基本概念
镜像
镜像能够了解为一堆静态的文件
容器
容器则是镜像run起来之后的一个实例。镜像之于容器就比方面向对象编程里的class之于object。
库房
镜像需求当地保存,这个当地便是库房
与传统虚拟化的差异
这儿咱们趁便讲一下传统虚拟化。
咱们看到,传统虚拟化是站在硬件物理资源的基础上,虚拟出多个OS,然后在OS的基础上构建相对独立的程序运转环境,而Dokcer则是在OS的基础进步行虚拟,明显Dokcer轻量得多,因而其资源占用、功能耗费比较传统虚拟化都有很大优势。
在IT职业从业多年,也算从看着年代从物理服务器走向虚拟化云核算年代,又预备进入Docker年代,作为下一代虚拟化技能,Docker正改变着整个职业开发、测验、布置使用的方法,至于虚拟化技能和docker技能到底有什么不同,下面来剖析一下。
01 什么是虚拟化?
望文生义,虚拟化技能是将物理资源以某种技能虚拟成资源池的方式,首要有一虚多和多虚一两种方式,比方个人电脑装置Vmware软件,能够在这个软件上装置其他Win体系、MacOS、Linux体系等,完成一台电脑/笔记本承载多个体系的长处,现在苹果笔记本用户双体系处理方案也以虚拟机为主,一般Windows用户或许需求量不大,而技能人员基本是必备软件了。
从企业层面来看,多虚一为首要方式,也便是将很多物理服务器集群虚拟化,构成一个资源池,在这个资源上创立各种不同的虚拟机,完成灵敏布置。
02 什么是Docker
其实docker和虚拟技能很像,但又有一些不同点,一方面是两个技能的层级上,虚拟机一般是底层硬件Hardware支撑,上层是虚拟办理体系Hypervisor层,在上层敞开不同的VM事务,假如需求将这些事务进行阻隔,需求每个VM发动客户机操作体系,十分耗费资源。
Docker彻底不同,底层有硬件和Host OS体系支撑,比方Windows/MacOS/Linux,中心抛去了臃肿的体系,而是以Docker看护进程替代,上层树立不同的容器,不同的使用镜像打包在不同的容器中,他们彼此阻隔。
03 虚拟化与docker的差异
docker规划细巧,布置搬迁快速,运转高效,使用之间彼此独立,办理人员能够看到一切容器的内容,虚拟化技能比较臃肿,不论什么使用都需求先创立新的体系,而且并非依照使用阻隔,而是依照体系阻隔,办理员无法看到体系内部信息。
举个比如,Docker便是手机中的各种APP,只需求一个体系就能够下载自己所需的使用,可是虚拟化技能相当于你的苹果手机装置一个巨大软件,这个软件上装置安卓体系、魅族体系等,每个体系上还要装置各类使用,比较费事。
但两者没有肯定的好坏,首要仍是看使用场景,依据不同的需求挑选不同的处理方案即可。