为什么是Docker

  • 合作开发的时候,在本机可以跑,别人的电脑跑不起来这里我们拿java Web应用程序举例,我们一个java Web应用程序涉及很多东西,比如jdk、tomcat、spring等等。当这些其中某一项版本不一致的时候,可能就会导致应用程序跑不起来这种情况。Docker则将程序直接打包成镜像,直接运行在容器中即可。
  • 服务器自己的程序挂了,结果发现是别人程序出了问题把内存吃完了,自己程序因为内存不够就挂了这种也是一种比较常见的情况,如果你的程序重要性不是特别高的话,公司基本上不可能让你的程序独享一台服务器的,这时候你的服务器就会跟公司其他人的程序共享一台服务器,所以不可避免地就会受到其他程序的干扰,导致自己的程序出现问题。Docker就很好解决了环境隔离的问题,别人程序不会影响到自己的程序。
  • 公司要弄一个活动,可能会有大量的流量进来,公司需要再多部署几十台服务器在没有Docker的情况下,要在几天内部署几十台服务器,这对运维来说是一件非常折磨人的事,而且每台服务器的环境还不一定一样,就会出现各种问题,最后部署地头皮发麻。用Docker的话,我只需要将程序打包到镜像,你要多少台服务,我就给力跑多少容器,极大地提高了部署效率。

3.Docker和虚拟机区别

关于Docker与虚拟机的区别,我在网上找到的一张图,非常直观形象地展示出来,话不多说,直接上图。

docker相对于虚拟机的缺点_Docker

比较上面两张图,我们发现虚拟机是携带操作系统,本身很小的应用程序却因为携带了操作系统而变得非常大,很笨重。Docker是不携带操作系统的,所以Docker的应用就非常的轻巧。另外在调用宿主机的CPU、磁盘等等这些资源的时候,拿内存举例,虚拟机是利用Hypervisor去虚拟化内存,整个调用过程是虚拟内存->虚拟物理内存->真正物理内存,但是Docker是利用Docker Engine去调用宿主的的资源,这时候过程是虚拟内存->真正物理内存。

传统虚拟机

Docker容器

磁盘占用

几个GB到几十个GB左右

几十MB到几百MB左右

CPU内存占用

虚拟操作系统非常占用CPU和内存

Docker引擎占用极低

启动速度

(从开机到运行项目)几分钟

(从开启容器到运行项目)几秒

安装管理

需要专门的运维技术

安装、管理方便

应用部署

每次部署都费时费力

从第二次部署开始轻松简捷

耦合性

多个应用服务安装到一起,容易互相影响

每个应用服务一个容器,达成隔离

系统依赖


需求相同或相似的内核,目前推荐是Linux