Docker:
将应用程序自动部署到容器上(使用go语言编写)
Docker特点:
提供简单轻量的建模方式
职责的逻辑分离 (开发人员只需要关心容器中的运行程序,运维人员关心管理容器即可)
快速高效的开发生命周期
鼓励使用面向服务的架构(docker推荐单个容器只运行一个服务程序和进程从而实现分布式应用程序模型)
Docker的使用场景:
使用docker容器开发,测试,部署服务
创建隔离的运行环境
搭建测试环境
构建多用户的平台即服务(PaaS)基础设施
提供软件即服务(SaaS)应用成勋
高性能,超大规模的宿主机部署
Docker的基本原理:

仓库里面下载不同的镜像
通过容器的方式把镜像动态加载
Docker容器:
等同于从模板中创建虚拟机,但是与传统的虚拟机不同,传统的虚拟机是通过中间层将一台或多台独立的机器虚拟运行于物理硬件。而容器则是直接运行与操作系统内核之上的用户空间。因此容器虚拟化也被称为操作系统虚拟化
容器是从镜像创建的运行实例,它可以被启动,开始,停止,删除。每个容器都是相互隔离的,保证安全的平台。可以把容器看做是一个简易版的linux环境(包括root用户权限,进程空间,用户空间,网络空间和运行在其中的应用程序)
不过由于依赖操作系统的特性,所以容器只能运行底层操作系统相同或相似内核的操作系统。docker使用的容器技术正是依赖于linux内核特性:Namespace和Cgroups 。所以docker上只能运行linux类型的系统而不能运行window系统
Namespaces机制:资源隔离方案。PID,IPC,Network等系统资源不再是全局性的,而是属于某个特定的Namespace
cgroups机制:限制单个进程或者多个进程所使用的资源。可以对 cpu,内存等资源实现精细化的控制(用来分配资源)


Docker仓库:
仓库是集中存放镜像文件的场所
仓库注册服务器上往往存在着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签
仓库又分为公开仓库(public)和私有仓库(private)两种形式
push镜像到仓库,从仓库pull下镜像
Docker原理剖析:
1资源隔离:
文件系统隔离:每个容器都有自己的root文件系统
进程隔离:每个容器都运行在自己的进程环境中
网络隔离:容器间的虚拟网络接口和IP地址都是分开的
资源隔离和分组:使用cgroups将CPU和内存之类的资源独立分配给每个Docker容器

2 文件系统
Docker镜像存储在一系列的只读层,当我们开启一个容器。Docker读取只读镜像并添加一个读写层在顶部,如果正在运行的容器修改了现有的文件,该文件将被拷贝出底层的只读层到最顶层的读写层,在读写层中的旧版本文件依然隐藏在该文件之下,但是没有被破坏(它依然存在于镜像之下)
当Docker的容器被删除,然后重新启动镜像时,将开启一个没有任何更改的新的容器----这些更改会丢失。
此只读层以及在顶部的读写层的组合被Docker称为AUFS (联合文件系统)
(Docker 目前支持的联合文件系统种类包括 AUFS, btrfs, vfs 和 DeviceMapper)

网友评论