docker:docker:通俗易懂解释

Posted 花和尚也有春天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker:docker:通俗易懂解释相关的知识,希望对你有一定的参考价值。

docker就相当于是VMware,docker里面的镜像就相当于VMware在装系统是使用的镜像文件,docker里面创建的容器就相当于是在VMware里面创建的虚拟机并已使用镜像文件装好系统。
它能做什么?虚拟机能做什么他就能做什么,就是一台服务器虚拟化很多服务器。为什么使用docker而不选择VMware,自己可以去百度一下。

参考:https://zhidao.baidu.com/question/1515781403041843340.html

Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。

docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。
1.不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,
而且很麻烦,还会造成一些冲突。比如IIS和Apache访问端口冲突。这个时候你就要隔离.net开发的网站和php开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。
2.你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境
的时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中运维就得想办法解决这样的问题。这时候要是有docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的docker就可以了。而且部署速度快。
3.在服务器负载方面,如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。
总之docker就是集装箱原理。

自己买了个服务器,前不久搭建好的一个网站,想要再搞一个站点,无奈只能修改端口后,再部署另外一个站点。繁琐的配置运行环境,迁移网站,是否让你感觉到很繁琐?服务器不想用了,想搬迁到另外一台服务器去部署,先是拷贝原有数据,在新的服务器上又开始搭建环境进行部署,这些费时间的事情现在只需要几分钟就能完成,那就是docker技术。

docker通俗按照自己的理解来说,就是类似VM虚拟机一样的虚拟技术。但是它比虚拟机更加强大,体积小,运行速度快,启动和关闭只需要几秒。相对于普通虚拟机来说,启动时间在分钟级别,占用内存大。所以这就是docker出现之后的优势。docker容器可以打包为镜像文件(类似VM虚拟机的那些快照文件),迁移的时候我们只需要在新服务器上安装docker,就能把之前打包好的镜像文件导入到docker里面,运行容器,就能实现访问,不需要重新配置环境。下面一张图展示普通虚拟机和docker的区别。 

VM虚拟机:

docker架构图:

    

我们进行对比一下,docker其实就是和虚拟机的目的差不多,都是虚拟化技术。但是docker比虚拟机更加轻量级,更快,更加易于移植。

镜像:  创建虚拟机和docker 都必不可少的东西。用过虚拟机的朋友都知道,创建一个虚拟机就先得下载操作系统的ISO镜像文件,然后通过镜像文件安装操作系统,和实体机类似,然后能在虚拟机中去安装各种软件。

容器:  通俗拿VM虚拟机和docker来举例,一个容器就类似于一个虚拟机,只不过在docker技术的术语上称为容器。这个容器装的就是我们部署的应用在运行,和虚拟机一样可以开机,关机,重启。而且这个容器可以打包为镜像文件,类似虚拟机快照的文件,放在其它虚拟机上又可以保持原样能运行,docker也是如此,把容器打包为镜像文件,然后在新的服务器安装好的docker环境下导入进去,保持原来的状态能够运行。

透过现象看本质:

1、docker容器实际上就是运行的一个进程,只不过由于docker帮助我们包装了这个进程,给这个进程加以一个可运行的微linux环境而已,让我们感觉看起来"像"虚拟机而已。所以也就不奇怪,为什么容器的启动是秒级的,启动一个虚拟机是分钟级别的。

2.  举个简单例子。一个房子比较大,假如租户一起住,大家一起住难免有束缚感,也不太方便。那么房东把房子改造一下,房子用可拆装的墙板隔离开来,分为许多的小房间,每个人住在自己的小房间。小房间麻雀虽小,五张俱全,你可以自己布置自己的房间。每个租客在自己的"小房间"里面可以做自己的事情,从而也不会打扰到其他人。但是他们都是共享这个房子的水费,电费,网费等公共资源(每个docker容器(也就是进程)依赖的是宿主机的资源)。  聪明的你会想到, 可拆装的墙板隔音效果或安全性不够(docker容器之间的隔离性比真实虚拟机要稍微弱), 会不会有坏人打个洞偷窥?  会不会有人监听我在房间的一举一动?  可拆装的墙板肯定是不比水泥墙(虚拟机隔离性)牢固.虽说隔离性没有虚拟机那么强,但是目前为止docker还没暴露出关于这方面的问题,广泛的社区以及大厂Google等公司都在使用,所以我们还是可以放心大胆使用的。   假如有一天房东要把房子卖了,只要把可拆装的墙板移除,打扫一下,回到原样,不破坏房子原样,就可以出售房子了(在容器中安装的软件,程序等都不会污染到宿主机的环境,容器被删除也就被删除了)。
 

原文参考:https://blog.csdn.net/xyz_dream/article/details/53081687

以上是关于docker:docker:通俗易懂解释的主要内容,如果未能解决你的问题,请参考以下文章

通俗易懂的docker—什么是docker?

docker是啥通俗易懂

Docker零基础快速入门(通俗易懂)

通俗易懂的docker—什么是容器和镜像

docker浅谈(通俗易懂-例子-实验-适合初学者)

docker浅谈(通俗易懂-例子-实验-适合初学者)