【Docker】(1)---Docker入门篇
Docker入门篇
简单一句话: Docker 是一个便携的应用容器。
一、Docker的作用
网上铺天盖地的是这么说的:
(1) Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。
(2) Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
(3) 更快速的交付和部署、更轻松的迁移和扩展.
道理呢是这个道理 但如果一点都没接触的人的不一定能够理解进去 。
通俗解释一:
在Docker出世之前,作为一个java开发的我 在服务器上搭建java环境是如何做的呢?
首先在云服务器上安装jdk tomcat mysql数据库...... , 如果有多个项目,我们可以运行多个tomcat 每个tomcat里面一个java应用。
这样也确实没啥毛病 但有它的弊端:
(1)如果公司新买了一个云服务器 同时需要把项目部署到该服务器上。那你是不是需要又要在该服务器上安装jdk、tomcat、mysql等等.....是不是很繁琐?
(2)如果需要在服务器上搭建net环境、java环境 那么他们依赖的软件会不会产生冲突呢。
这张图解释的挺好的。
A1模式: 上面讲的就相当于这里的模式A1,所有的应用共享服务器的CPU、内存等资源,这时如果一个应用出现问题,比如CPU爆满等等,另一个应用也就玩完了。
所以要这时就要做到资源独立, 一个应用一份资源。
A2模式: 一个服务器上装几个虚拟机,一个虚拟机一个应用。这时如果你要重启虚拟机,你想想你重启电脑要多久。而且你想迁移应用的话,你就又要装虚拟机,
配环境等等,麻烦不?我是觉得麻烦。
A3模式: A3模式就是Docker,容器是什么概念我就不说了,这时一个服务器上运行多个容器,一个容器拥有独立的CPU、内存等资源,完全满足了应用隔离的需求。
而且容器重启,1秒搞定!应用迁移的时候,这个大家应该也知道,所有装了Docker的服务器,只需把镜像pull或者load进去,run,一切OK,就是这么任性!
通俗解释二:
Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会
互相影响。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。docker就是类似的理念。
1、不同的应用程序可能会有不同的应用环境,比如.net环境和php环境依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上还可能会造成一些冲突。
常规来讲,我们可以在服务器上创建不同的虚拟机,但是虚拟机开销比较高。docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小。
2、你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运这个时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持
centos不支持,这时候要是有docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的docker就可以了。而且部署速度快。
3、在服务器负载方面,如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。总之docker就是集装箱原理。
参考
如果一个人充满快乐,正面的思想,那么好的人事物就会和他共鸣,而且被他吸引过来。同样,一个人老带悲伤,倒霉的事情也会跟过来。
——在自己心情低落的时候,告诫自己不要把负能量带给别人。(大校3)