一、Docker简介
1.Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。Docker的特别之处:Docker在虚拟化的容器执行环境中增加了一个应用程序部署引擎。该引擎的目标就是提供一个轻量、快速的环境,能够运行开发者的程序,并方便高效地将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境。
2.Docker提供一个简单、轻量的建模方式:Docker依赖于“写时复制”模型(写时复制技术:内核只为新生成的子进程创建虚拟空间结构,它们来复制于父进程的虚拟究竟结构,但是不为这些段分配物理内存,它们共享父进程的物理空间,当父子进程中有更改相应段的行为发生时,再为子进程相应的段分配物理空间。)
3. Docker提供职责的逻辑分离:开发人员只关心容器中运行的应用程序,运维人员只需要关心如何管理容器。Docker设计的目的就是加强开发人员写代码的开发环境与应用程序要部署到生产环境的一致性。
4. Docker提供快速、高效的开发生命周期:Docker的目标之一是缩短代码从开发、测试到部署、上线运行的周期,是应用具有可移植性。
5. Docker鼓励面向服务的架构和微服务架构:Docker推荐单个容器只运行一个应用程序或者进程,这样就行程了一个分布式的应用程序模型。
6. Docker的核心组件:
Docker客户端和服务器:Docker也是一个客户/服务器(C/S)架构的程序。Docker客户端只需要向Docker服务端或者守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。具体架构见下图:
Registry:用来保存用户的构建的镜像。Registry分为公共和私有两种。用户可以使用Docker Hub上的公共镜像,也可以在https://hub.docker.com/account/singnup/上注册自己的账号存储和分享自己的私有镜像。(也可以架构自己私有的Registry) Docker镜像:用户基于镜像来运行自己的容器,镜像是基于联合文件系统的一种层式的结构。有一系列指令一步一步构建出来。其实,也可以将镜像看做是容器的“源代码”。镜像体积小,易于分享、存储和更新。
Docker容器:容器内可以运行一个或者多个进程。Docker借鉴了标准集装箱的概念à每个容器包含有一个软件镜像,也就是容器的货物。
7. Docker可以应用的一些场景:
加速本地开发和构建流程,使其更加高效、更加轻量化;
能够让独立服务或者应用程序在不同的环境中,得到相同的运行结果;
用Docker创建隔离的环境进行测试;
Docker可以让开发者先在本机上构建一个复杂的程序或者架构来进行测试;
构建一个多用户的平台即服务(Pass)基础设施;
为开发、测试提供一个轻量级的独立沙盒环境,或者将独立的沙盒环境用于技术教学;
提供软件即服务(Saas)应用程序;
高性能、超大规模的宿主机部署。
8. 基于和围绕Docker生态环境构建的早期项目列表:http://blog.docker.com/2013/07/docker-projects-from-the-docker-community/
9. Docker的技术组件
文件系统隔离:每个容器都有自己的root文件系统
进程隔离:每个容器都运行在自己的进程环境中
网络隔离:容器间的虚拟网络接口和IP地址都是分开的
资源隔离和分组:使用cgroup将CPU和内存之类的资源独立分配给每个Docker容器
写时复制:文件系统都是通过写时复制创建的,这就意味着文件系统是分层的、快速的,而且占用的磁盘空间更小
日志:容器产生的STDOUT、STDERR和STDIN(输入输出错误日志)这些IO流都会被收集并记入日志,用来进行日志分析和故障排错
交互式shell:用户可以创建一个伪tty终端,将其连接到STDIN,为容器提供一个交互式的shell
10.Docker资源:
Docker官网:http://www.docker.com/
Docker Hub:http://hub.docker.com
Docker 官方博客:http://blog.docker.com/
Docker 官方文档:http://docs.docker.com/
Docker 快速入门指南:http://www.docker.com/tryit/
Docker 的GitHub源代码:http://github.com/docker/docker
Docker Forge:http://github.com/dockerforge 收集各种Docker工具、组件和服务
Docker 邮件列表:http://groups.google.com/forum/#!forum/docker-user