Docker学习笔记(一)
一、什么是docker
2013年,docker开源。当时docker的功能就是将linux容器中的应用代码打包,轻松的在服务器之间迁移。
简单来讲,docker就是一个用来装应用的容器,可以把任何程序放到docker中。
它是跨平台的,支持Windows,macOs,linux。
二、Docker思想
1、集装箱
在没有集装箱之前,运输货物非常零散,容易丢失。有了集装箱之后,就可以密封货物,货物不容易丢失。
把货物类比程序,如果要把一个运行的程序部署到新机器上,就可能出现比较多的错误,比如配置文件丢失,环境配置错误。Docker的出现就完美的解决了这个问题,用集装箱的思想去管理程序,使得程序迁移简单快捷。
2、标准化
(2.1、运输方式
Docker有一个中央仓库,在本机执行docker命令可以把程序打包到仓库去,部署的时候再用命令从仓库把程序运输到非服务器上。
(2.2、存储方式
用Docker之后,不需要关心应用存储路径,只需要用命令就可以运行或停止程序。
(2.3、API接口
Docker提供了一系列的api对应用的启动,查看,删除等等操作
3、隔离
Docker用linux底层的LXC技术可以实现快速的创建和销毁容器,最大效率的隔离了进程和资源。
三、Docker解决了什么问题
1、很多时候,代码在本地运行的时候是没有问题的,但是一旦部署到服务器上就会出现各种问题,有可能是jdk版本,也有可能是tomcat版本等等,原因很多,但是归根究底问题就是一个,本地环境与服务器环境不一样造成的。
Docker的出现就完美的解决了这个问题,把操作系统,jdk,tomcat,代码等都一个个放到集装箱里。再打包放到镜像仓库上,在本地环境怎么运行,在服务器上也怎么运行。
一句话总结,Docker解决了运行环境不一致带来的问题。
2、很多时候,测试环境的服务器并不会只部署一个应用,这是对资源的浪费,那假如其他应用发生了死循环或有某些计算量特别大的应用总是会占用其他应用的资源。应用Docker就可以解决这个问题,docker在启动的时候就先限定了最大的资源使用量,如果一旦超过,就会杀死程序。
3、当某些特定时刻,访问量会特别大的时候,例如双11的时候,业务量会激增。没有docker之前,都是由运维去增加服务器节点应对双11激增的业务量,对于运维来说,这是一个极大的工作量,每台服务器都需要配置环境。有了docker之后增加节点的工作量就大大减少,只需要在新增的服务器节点上执行docker命令就可以快速的扩展服务器。Docker的出现让弹性收缩,快速扩展成为了现实。