1.问题
1.不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成一些冲突。。这个时候你就要隔离.net开发的网站和php开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。
2.你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中运维就得想办法解决这样的问题。
3.搭建集群。需要多台服务器,首先想到的是安装虚拟机,模拟多台服务器去搭建集群,这个时候,就得在每台服务器上去配置相同的环境,然后再去启动每台服务,步骤很是繁琐并且启动会特别慢
2. 解决方法
使用 docker
什么是 Docker?
3. docker 的历史
2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。
这家公司主要是做 linux 容器虚拟技术的
后来,dotCloud公司将自己的容器技术进行了简化和标准化,并命名为——Docker。
Docker技术诞生之后,并没有引起行业的关注。而dotCloud公司,作为一家小型创业企业,在激烈的竞争之下,也步履维艰。
正当他们快要坚持不下去的时候,脑子里蹦出了“开源”的想法。
2013年3月,Docker之父 ----> 28岁的Solomon Hykes正式决定,将Docker项目开源。
越来越多的IT工程师发现了Docker的优点,然后蜂拥而至,加入Docker开源社区。
然后就火了。
2014年4月9日,Docker1.0发布!
在容器技术之前,业界的网红是虚拟机。虚拟机技术的代表,是VMWare
虚拟机属于虚拟化技术。而Docker这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化。
虚拟机虽然可以隔离出很多“子电脑”,但占用空间更大,启动更慢,虚拟机软件可能还要花钱(例如VMWare)
而容器技术恰好没有这些缺点。它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境
它启动时间很快,几秒钟就能完成。而且,它对资源的利用率很高(一台主机可以同时运行几千个Docker容器)此外,它占的空间很小,虚拟机一般要几GB到几十GB的空间,而容器只需要MB级甚至KB级。
4.深入认识 docker
要知道 两句口号
-
Build, Ship and Run (搭建,发送,运行)
- Build once,Run anywhere(搭建一次,到处能用)
Docker技术的三大核心概念,分别是:
镜像(Image)
容器(Container)
仓库(Repository)
那个放在包里的“镜像”,就是Docker镜像
而我的背包,就是Docker仓库
我在空地上,用魔法造好的房子,就是一个Docker容器