郑州七彩网站建设,wordpress淘客分销,如何建立网站的英文版,盐城建设银行网站老套路哈#xff0c;第一章先科普一下三种常见的云服务类型#xff0c;第二和第三章节写docker学习笔记。
一 、IAAS、PAAS、SAAS
IAAS (Infrastructure as a Service)#xff1a;基础即服务#xff0c;供应商仅提供给用户最基础设施的服务资源#xff0c;也就是服务器资…老套路哈第一章先科普一下三种常见的云服务类型第二和第三章节写docker学习笔记。
一 、IAAS、PAAS、SAAS
IAAS (Infrastructure as a Service)基础即服务供应商仅提供给用户最基础设施的服务资源也就是服务器资源包括计算资源、存储资源、网络资源。用户可以根据自身需求自由的租赁、释放这些资源灵活的扩展和管理自己的应用程序。
PAASPlantform as a Service平台即服务供应商在提供给用户基础设施的服务资源外还会提供给用户一个开发环境和工具如操作系统、中间件、运行环境等。用户可以在这个环境上构建、测试、部署和管理自己的应用程序。使用户可以专注于应用程序的开发而不必关心底层的基础设施。
SAASSoftware as a Service软件即服务用户通过互联网访问云端的应用程序无需在本地安装或维护。这种服务模式通常基于多租户架构意味着许多用户共享同一份软件资源并按照订阅模式支付费用。
docker就是属于PAAS的实现的一种。 二、docker介绍
Docker就是虚拟化的一种轻量级替代技术。Docker的容器技术不依赖任何语言、框架或系统可以将App变成一种标准化的、可移植的、自管理的组件并脱离服务器硬件在任何主流系统中开发、调试和运行。简单的说就是在 Linux 系统上迅速创建一个容器类似虚拟机并在容器上部署和运行应用程序并通过配置文件可以轻松实现应用程序的自动化安装、部署和升级非常方便。因为使用了容器所以可以很方便的把生产环境和开发环境分开互不影响。 三、docker的核心技术
1、cgroups
Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源。于是就出现了cgroups的概念cgroup就是controller group 资源控制组在这个group中有分配好的特定比例的cpu时间IO时间可用内存大小等。 cgroups是将任意进程进行分组化管理的Linux内核功能。最初由google的工程师提出后来被整合进Linux内核中。
cgroups中的 重要概念是“子系统”也就是资源控制器每种子系统就是一个资源的分配器比如cpu子系统是控制cpu时间分配的。首先挂载子系统然后才有control group的。比如先挂载memory子系统然后在memory子系统中创建一个cgroup节点在这个节点中将需要控制的进程id写入并且将控制的属性写入这就完成了内存的资源限制。cgroups 被Linux内核支持有得天独厚的性能优势发展势头迅猛。在很多领域可以取代虚拟化技术分割资源。cgroup默认有诸多资源组几乎可以限制所有服务器上的资源如cpu mem iops,iobandwide,net,device acess等。
ps:内核隔离也称为内核空间隔离是一种将系统进程隔离开来防止非法访问的技术。在传统的操作系统中所有进程都可以共享系统内核这使得一个进程在崩溃或被攻击时可能会影响到其他进程甚至整个系统的稳定运行。而内核隔离通过将不同的进程隔离开来使得每个进程都有自己的内存空间和资源从而提高了系统的安全性。
内核隔离的好处提高安全性、增强稳定性、满足安全性标准
2、LXC
LXC是Linux containers的简称是一种基于容器的操作系统层级的虚拟化技术。借助于namespace的隔离机制和cgroup限额功能LXC提供了一套统一的API和工具来
建立和管理container。LXC跟其他操作系统层次的虚拟化技术相比最大的优势在于LXC被整合进内核不用单独为内核打补丁
LXC 旨在提供一个共享kernel的 OS 级虚拟化方法在执行时不用重复加载Kernel, 且container的kernel与host共享因此可以大大加快container的 启动过程并显著
减少内存消耗容器在提供隔离的同时还通过共享这些资源节省开销这意味着容器比真正的虚拟化的开销要小得多。 在实际测试中基于LXC的虚拟化方法的IO和CPU
性能几乎接近 baremetal 的性能。 虽然容器所使用的这种类型的隔离总的来说非常强大然而是不是像运行在hypervisor上的虚拟机那么强壮仍具有争议性。如果内核停止那么所有的容器就会停止运行。虚拟机物理机停止虚拟机会挂起当再次打开虚拟机时会返回到物理机关机前的状态。容器在物理机关机后再次开启容器不会回到物理机关机之前的状态
• 性能方面 LXC远远高于KVM
• 内存利用率 LXC远远高于KVM
• 隔离程度 KVM远远高于LXC
3、AUFS photoshop 图层qcow2后端镜像
AuFS是一个能透明覆盖一或多个现有文件系统的层状文件系统。 支持将不同目录挂载到同一个虚拟文件系统下可以把不同的目录联合在一起组成一个单一的目录。这种是一种虚拟的文件系统文件系统不用格式化直接挂载即可。
Docker一直在用AuFS作为容器的文件系统。当一个进程需要修改一个文件时AuFS创建该文件的一个副本。AuFS可以把多层合并成文件系统的单层表示。这个过程称为“写实拷贝” copy on write 。AuFS允许Docker把某些镜像作为容器的基础。例如你可能有一个可以作为很多不同容器的基础的CentOS系统镜像。多亏AuFS只要一个CentOS镜像的副本就够了这样既节省了存储和内存也保证更快速的容器部署。使用AuFS的另一个好处是Docker的版本容器镜像能力。每个新版本都是一个与之前版本的简单差异改动有效地保持镜像文件最小化。但这也意味着你总是要有一个记录该容器从一个版本到另一个版本改动的审计跟踪。
四、其他技术
1、Docker Image 镜像
Docker Image是一个极度精简版的Linux程序运行环境比如vi这种基本的工具没有官网的Java镜像包括的东西更少除非是镜像叠加方式的如CentosJava7
Docker Image是需要定制化Build的一个“安装包”包括基础镜像应用的二进制部署包
Docker Image 内不建议有运行期需要修改的配置文件
Dockerfile 用来创建一个自定义的image, 包含了用户指定的软件依赖等。当前目录下包Dockerfile,使用命令build来创建新的image
Docker Image的最佳实践之一是尽量重用和使用网上公开的基础镜像
2、Docker Container 容器
Docker Container是Image的实例共享内核
Docker Container里可以运行不同Os的Image比如Ubuntu的或者Centos
Docker Container不建议内部开启一个SSHD服务1.3版本后新增了docker exec命令进入容器排查问题。
Docker Container没有对外的IP地址通常不会有服务端口暴露是一个封闭的“盒子/沙箱”
3、Docker Daemon 守护进程
Docker Daemon 是创建和运行Container的Linux守护进程也是Docker最主要的核心组件
Docker Daemon 可以理解为Docker Container的Container
Docker Daemon 可以绑定本地端口并提供Rest API服务用来远程访问和控制
4、Docker Registry/Hub 仓库
Docker之所以这么吸引人除了它的新颖的技术外围绕官方RegistryDocker Hub的生态圈也是相当吸引人眼球的地方。在Docker Hub上你可以很轻松下载到大量已经容器化好的应用镜像即拉即用。这些镜像中有些是Docker官方维护的更多的是众多开发者自发上传分享的。而且 你还可以在Docker Hub中绑定你的代码托管系统目前支持Github和Bitbucket配置自动生成镜像功能这样Docker Hub会在你代码更新时自动生成对应的Docker镜像。