Docker的基本概念
Docker的产生背景
2010年,几个大胡子年轻人在旧金山成立了一家PaaS(Platform as a Service)平台的公司,起名为「dotCloud」. dotCloud 把需要花费大量时间的手工工作和重复劳动抽象成组件和服务,并放到了云端,另外,它还提供了各种监控、告警和控制功能,方便开发者管理和监控自己的产品.
Docker 迅速成长为云计算相关领域最受欢迎的开源项目,没有之一,Amazon EC2、Google GAE、IBM BlueCloud、Microsoft Azure、Red Hat 和 VMware 分别表示已经支持 Docker 技术或准备支持。据说,有 Linux 的地方,就可以运行 Docker.
在开源社区github, OSChina,码云等搜索docker, 你会发现不计其数的内容映入眼帘.Docker是个划时代的开源项目, 它彻底释放了计算虚拟化的威力, 极大的提高了应用的维护效率,降低了云计算应用开发成本,让应用的部署, 测试和分发变得前所未有的高效和轻松.无论是应用开发者, 运维, 测试还是其他信息从业人员,都有必要掌握Docker, 节约有限的时间.
docker使用GO语言开发, Docker容器管理引擎大大降低了容器技术的使用门槛,轻量级,可移植,虚拟化,语言无关,写了程序扔上去做成镜像可以随处部署和运行,开发、测试和生产环境彻底统一了,还能进行资源管控和虚拟化。程序员们流着口水惊呼,太方便了.
三个容易混淆的基本概念
Container(容器), Image(镜像), Repository(仓库)
仓库: 是集中存放镜像的地方, 一个注册服务器上可以有很多的仓库,一个仓库中有很多的镜像, 使用不同tag区分
镜像: 类似一个系统文件模板,也可以说是用户空间,镜像被构建完成之后是不可以被修改的, 因此是只读权限
容器: 是镜像的实例, 容器可以运行,启动,停止,删除, 每个容器都是隔离的安全应用平台. 和面向对象类似, 可以把镜像想象为类, 把容器想象成为实例化的对象.
镜像实际上有一层层文件系统组成, 镜像基于Dockerfile构建,Dockerfile是一个描述文件,里面包含了若干条命令, 每条命令都会对基础文件系统创建新的层次结构.
Docker提供了一个简单的机制来创建镜像或者更新现有镜像, 我们甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用.这个下载的地方就叫公有docker仓库.
Docker 的默认仓库Docker Hub是公共仓库, 公司或个人可以创建自己的私有仓库.
仓库操作类似Git, 当用户创建自己的镜像之后可以使用Push上传到公有或者私有仓库, 下次在另外一台机上使用这个镜像的时候, 只需要从仓库Pull下来既可以了.
在没有docker的时代, 如果要在几天内部署几十台服务器, 这对部署环境人员来说是一件非常痛苦的事情, 而且每台服务器的环境还不一定相同,会出现各种意想不到的问题, 最后部署到头皮发麻. 使用docker的话, 只需要将程序打包到镜像, 要多少台服务, 就给你多少个容器, 内容完全一致, 极大的提高了部署效率.
容器从镜像启动的时候, Docker会在镜像的最上层创建一个可写层,镜像本身是只读的, 保持不变,所以真正运行的是docker 实例即容器.
微服务
Docker的细粒度松耦合让我们用一个Docker容器装载一个功能场景, 也就是按照功能进行分类, 每个docker里面装载一个服务或者应用,一个服务器上可以运行多个Docker 容器, 或者多个Docker分散在多服务器上运行,整个架构可以按照业务逻辑的规划,以细粒度的方式分散在各个docker容器, 并根据HTTP REST api的方式进行调用整合.
隔离应用
有很多原因让我们选择在一台机器上运行不同的应用, 比如提高开发效率.
我们经常考虑两点, 一是因为降低企业成本而进行服务器的整合, 二是将一个整体式的应用拆分成松耦合的单个服务(高内聚低耦合是我们经常要思考的问题).
Docker隔离应用的能力使得Docker可以整合多个服务器来降低成本,由于没有多个操作系统的内存占用,以及能在多个实例之间共享没有使用的内存, Docker可以比虚拟机提供更好的服务器整合解决方案.
Docker is open Platform for developers and sysadmins to build, ship, and run distributed applications whether on laptops, data center VMs, or the cloud.
Build once, Run anywhere 非常生动形象的描述了docker.
参考:
https://www.oschina.net/news/57838/docker-dotcloud
Story:
巴甫洛夫只说了八个字:"要热诚而且慢慢来", "热诚", 有持久的兴趣才能坚持到成功。"慢慢来",不要急于求成,做自己力所能及的事情,然后不断提高自己;不要妄想一步登天,要为自己定一个切实可行的目标,有挑战又能达到,不断追求,走向成功。