Basics – Docker, Containers, Hyp
Basics – Docker, Containers, Hypervisors, CoreOS
容器在操作系统级虚拟化,虚拟机管理程序在硬件级虚拟化。
虚拟机管理程序从硬件抽象操作系统,容器从操作系统抽象应用程序。
虚拟机管理程序(Hypervisors
)消耗每个实例的存储空间。容器(Containers
)使用单个存储空间,每层都使用较小的增量,因此效率更高。
容器可以在不到500毫秒的时间内启动和准备应用程序,并为快速扩展创造新的设计机会。根据存储速度,虚拟机管理程序通常根据操作系统启动20秒。
容器具有内置的和高价值的云编排api。hypervisor
具有较低的质量api,它们具有有限的云编排值。
Containers (容器)
有许多Linux容器技术,但它们都使用相同的原理,将应用程序空间隔离在操作系统中。
LXC – Linux Containers
LXC是Linux内核遏制功能的用户空间界面。 通过强大的API和简单的工具,Linux用户可以轻松创建和管理系统或应用程序容器。
虽然Docker现在在LMCTFY中使用自己的容器格式libcompiler或其他容器,如Google容器 - Github / google / lmctfy
Docker是管理LXC容器的软件工具链。这似乎与vSphere vCenter管理大量ESXi管理程序实例的方式类似。在操作上它是非常不同的,更强大的。
Docker是开发人员和系统管理员构建、发布和运行分布式应用程序的开放平台。Docker由Docker引擎、可移植的轻量级运行时和打包工具以及Docker Hub组成,它是用于共享应用程序和自动化工作流的云服务,Docker使应用程序能够快速地从组件中组装起来,消除了开发、QA和生产环境之间的摩擦。因此,它可以更快地发送和运行相同的应用程序,在笔记本电脑、数据中心vm和任何云上运行。
在Docker容器中执行的进程与在主机操作系统或其他Docker容器中运行的进程隔离。然而,所有进程都在同一个内核中执行。Docker利用LXC为容器提供了不同的名称空间,这是一个在Linux内核中已经存在了5年的技术,并且被认为相当成熟。它还使用了在Linux内核中更长的控制组来实现资源审计和限制。
然而,当你花更多的时间在容器上时,你就能理解细微但重要的区别。Docker很好地利用了集装箱化的优点,从而实现了集中的目的,即轻量级的打包和应用程序的部署。
- Docker容器有一个API,允许对容器进行外部管理。Docker的核心价值主张。
- 容器的开销比vm (KVM & ESX)要少,而且通常比在hypervisor中运行相同的应用程序要快。
- 大多数Linux应用程序可以在Docker容器中运行。
Clustering and Multiples (集群和倍数)
- 容器促进了跨多个容器传播应用程序的思想。
- 我认为这部分是因为容器往往受到定义的资源约束,但因为容器的部署很简单。
- 例如,在容器中部署HAProxy作为负载均衡器,然后将多个Tomcat /节点实例用于应用程序,这更有意义。在许多小实例中扩展负载非常适合云架构,因为云提供商的过载/过度订阅会限制容器的峰值性能。
- Docker及其姊妹产品与传统的网络服务没有任何集成。使用传统的负载平衡器和代理在这个系统中没有任何意义。
Docker的价值
- 容器虚拟化的框架。
- 容器是持有应用程序的Linux实例。
- Docker是以集装箱的概念为基础,以呈现标准化的方式呈现
- 容器是很久以前的惯例,例如Solaris Zones和IBM LAPR等等。
- 但是这些产品相对难以使用
- Docker在容器周围添加了一个包装器,使它们易于使用。工具链用于自助服务。
- 开发人员关心应用程序,操作人员关心容器/虚拟机管理程序/裸机。
- 开源意味着没有许可费用。
流程,工作流程和业务流程变更
Business Process
- 开发人员可以在Docker容器中构建应用程序,然后将容器运送到持续集成服务器(ala Jenkins)。
- 开发人员可以将应用程序打包到操作系统中。
- Docker提供了强大的API,允许程序控制。我的意思是,API是Docker的核心。使用Puppet或Chef构建Docker镜像可能不是最佳选择
- 有些人使用Ansible来自动化Docker。由于支持设备特定功能,Ansible在网络方面颇受欢迎。
Workflow
- 有成千上万的镜像是由Docker预先打包的。
- 大多数镜像都基于Ubuntu。
- Docker编配平台对于更复杂的应用来说非常重要,比如在基础设施中通过智能容器放置的弹性、容错、缩放等。(类似于在OpenStack中为虚拟机管理程序放置的云编排。
- 像Decking,New Relic的Centurion和Google的Kubernetes等编排系统都旨在帮助集装箱的部署和生命周期管理。
- 还有很多很多。
- Docker基础镜像将有“层”的应用程序添加到基本图像。Union文件系统意味着只有该层的delta被添加到镜像中。这大大减少了操作系统消耗的空间——在每个VM中都是相同的,为什么要在每个VM中复制它(然后让存储阵列去复制它)。
Infrastructure
- 有它自己的存储系统的delta图像。当前的Union文件系统,还有其他选项。并且一直是一些激烈争论的话题。根文件系统拥有装载Docker映像所需的所有内容。
- 每次您对Docker镜像进行更改时,都会创建一个新图层并将其标记为只读。来自底层Docker镜像的这种增量大大降低了存储消耗。
- 底层Docker映像中的每个增量都有很多图层。
- 然后,Docker镜像从基础镜像构建而成
- Docker可以运行裸机或在管理程序中运行。
- LXC使用Linux特性“控制组”,它具有深入洞察容器资源消耗的理想副作用。
Linux容器依赖于控制组,它不仅跟踪进程组,而且还公开了许多关于CPU、内存和阻塞I/O使用的指标。我们将了解如何访问这些度量,以及如何获得网络使用度量。这与“纯”LXC容器以及Docker容器有关。
CoreOS
- 许多网站一起讨论CoreOS和Docker,但没有强调差异。混乱让人疑惑。
- CoreOS是Chrome OS的一个分支,它通过使用通过Chromium OS免费提供的软件开发工具包(SDK)作为基础,同时添加新功能并定制它以支持用于服务器的硬件 - CoreOS - 维基百科,自由的百科全书
CoreOS没有提供包管理器,它要求所有应用程序都在其容器内运行,使用Docker和它的底层Linux容器(LXC)操作系统级的虚拟化技术,用于在单个控制主机(CoreOS实例)上运行多个独立的Linux系统(容器)。这样,资源分区通过多个隔离的用户空间实例执行,而不是使用管理程序和提供成熟的虚拟机。这种方法依赖于Linux内核的cgroups功能,它提供了名称空间隔离和限制、计算和隔离进程组的资源使用(CPU、内存、磁盘I/O等)的能力。CoreOS -维基百科,免费的百科全书。
- CoreOS是一个轻量级操作系统,旨在提供作为操作系统的最小可行功能。
- 我知道这构成了作为Docker容器内的操作系统部署的坚实基础。
- 同时,它适用于托管Docker容器。 CoreOS在'Docker'下面,'在'它里面。这可能是我的困惑。
- CoreOS似乎是一个Linux发行版,它具有用于服务发现和配置共享的软件包,可协助进行大量部署。对群集应用程序有用。
- Fleet是CoreOS的一种编排工具,并与具有自己的编排工具的Docker分开。
EcoSystem
- Docker得到了来自成熟供应商的广泛支持。对于一些围观者来说,这似乎很时尚,但在那里
- VMware已经采取强有力的防御措施来接纳Docker
- Docker非常适合PaaS,PaaS的应用程序是从开发平台直接开发并部署到容器中的。许多PaaS平台提供的CI / CD系统的部署方式不仅仅是“现场”,还包括测试,UAT等等。
- 许多现有的托管公司可以轻松提供Docker托管服务,因为这些需求是现代Linux内核和少量依赖项。我认为如果没有编排工具,用户必须提供它们,Docker托管功能就没有多大用处。
- 包括谷歌在内的Docker周围的大群人。
- 希望采用DevOps的开发人员似乎对该产品有很强的吸引力。
- SysAdmins转向Docker管理和与开发人员集成的更有价值的上游功能对运营的影响很大。也就是说,如果PaaS系统未被使用。