Docker 容器简介
1、容器:管理程序虚拟化(hypervisor virtualization,HV)通过中间层将一台或多台独立的机器虚拟运行于物理硬件之上,而容器直接运行在操作系统内核之上的用户空间,也被成为"操作系统级虚拟化"(容器共享使用宿主机的操作系统,因此可以在瞬间建立容器)
注:由于容器"客居"于操作系统,因此容器只能运行在与底层宿主机相同或类似的操作系统(如可以在Ubuntu服务器上运行RHEL、但不能在Ubuntu服务器上运行Windows)
2、容器运行不需要模拟层(emulation layer)和管理层(hypervisor layer),而是使用操作系统的系统调用接口,这降低运行单个容器所需的开销,也使得宿主机中可以运行更多的容器
3、容器技术一般应用于超大规模的多租户服务部署、轻量级沙箱以及对安全要求不太高的隔离环境,如"权限隔离监牢(chroot jail)"(创建一个隔离的目录环境来运行进程。如果权限隔离监牢正在运行的进程被者攻破,者便会发现自己"身陷囹圄",因为权限不足被困在容器所创建的目录中,无法对宿主机进一步破坏)
4、常见的容器技术:OpenVZ、Solaris Zones、Linux容器(LXC)等
5、Docker:将开发的应用程序自动部署到容器的开源引擎,基于LXC和AUFS,由Docker公司团队使用Google公司退出的Go语言编写,基于Apache 2.0开源授权协议发行
6、 Docker在虚拟化容器环境中增加一个应用程序部署引擎,该引擎提供一个轻量、快速的环境,能够运行开发者的程序,并方便高效地将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境,并且Docker极其简洁,所需的全部环境只是一台仅仅安装了兼容版本的Linux内核和二进制文件的宿主机;AUFS
Docker 架构
1、Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
2、Docker 容器通过 Docker 镜像来创建。
3、容器与镜像的关系类似于面向对象编程中的对象与类。


Docker的应用场景
1、Web 应用的自动化打包和发布。
2、自动化测试和持续集成、发布。
3、在服务型环境中部署和调整数据库或其他的后台应用。
4、从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
Docker 的优点

1、快速的交付和部署:对开发和运维(devops)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行,开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码,Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的;Docker容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
2、更高效的虚拟化:Docker容器的运行不需要额外的管理系统支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
3、更轻松的迁移和扩展:Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
4、容器具有轻量级特性,所需的内存空间较少,提供非常快的启动速度,而虚拟机提供了专用操作系统的安全性和更牢固的逻辑边界。
5、简单的管理:使用Docker,只需要小小的修改,就可以替代以往大量的更新工作,所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理
6、虚拟机管理程序与硬件对话,就如同虚拟机的操作系统和应用程序构成了一个单独的物理机,虚拟机中的操作系统可以完全不同于主机的操作系统,而容器提供了更高级的隔离机制,许多应用程序在主机操作系统下运行,所有应用程序共享某些操作系统库和操作系统的内核。
7、容器和虚拟机都具有高度可移植性,但方式不一样,就虚拟机而言,可以在运行同一虚拟机管理程序(通常是VMware的ESXI、微软的Hyper-V或者开源Zen或KVM)的多个系统之间进行移植;而容器不需要虚拟机管理程序,因为它与某个版本的操作系统绑定在一起,并且容器中的应用程序可以移到任何地方,只要那里有一份该操作系统的副本。
8、容器的一大好处就是应用程序以标准方式进行了格式化,之后才放到容器中,开发人员可以使用同样的工具和工作流程,不管目标操作系统是什么,一旦在容器中,每种类型的应用程序都以同样的方式在网络上移动,这样一来,容器酷似虚拟机,但它们又是程序包文件,可以通过互联网或内部网络来移动。
Docker镜像
1、构建Docker世界的基石,用户基于镜像运行自己的容器,基于联合(Union)文件系统的一种层式结构,由一系列指定一步一步构建出来。(也可将镜像当作容器的"源代码")
2、简单说Docker镜像就是一个只读的模板,例如一个镜像可以包含一个完整的Centos操作系统环境,里面仅安装Apache或用户需要的其它应用程序,用户可自行构建或下载使用。
Docker容器
1、Docker利用容器来运行应用,容器是从镜像创建的运行实例,它可以被启动、开始、停止、删除,每个容器都是相互隔离的、保证安全的平台;可以把容器看做是一个简易版的。
2、Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层
Docker仓库(Registry)
1、集中存放镜像文件的场所,保存着用户构建镜像,分为公共和私有两种,Docker公司运营的公共仓库叫做Docker Hub,用户可注册账号,分享并下载别人的镜像使用。
2、国内的比较常用的公开仓库为Docker Pool,可以提供大陆用户更稳定快速的访问,当然用户也可以在本地网络内创建一个私有仓库,当用户创建了自己的镜像之后就可以使用 push命令将它上传到公有或者私有仓库,当下次在另外一台机器上使用这个镜像时候,只需要从仓库上pull下来即可。
3、当然用户也可在Docker Hub上保存自己的私有镜像,如包含源代码或专利信息等需要保密的镜像,或者只有团队或组织内部可见的镜像。
注:Docker仓库的概念跟Git类似,注册服务器可以理解为GitHub这样的托管服务
Docker引擎(Docker客户端和服务器)
1、Docker是一个客户端/服务器(C/S)架构的程序,Docker客户端只需向
Docker服务器或守护进程(有时也称为Docker引擎)发出请求,服务器或守护进程将完成所有工作并返回结果。
2、Docker提供docker命令工具和一整套RESTful APT来与守护进程交互,用于可以在同一台宿主机运行Docker守护进程和客户端,也可以从本地Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。

相关链接
Docker 官网:http://www.docker.com
Github Docker 源码:https://github.com/docker/docker
|