容器技术

Docker学习

允我心安 提交于 2019-11-30 03:33:14
Docker入门    我们用的传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。    而容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。    容器技术是实现操作系统虚拟化的一种途径,可以让您在资源受到隔离的进程中运行应用程序及其依赖关系。通过使用容器,我们可以轻松打包应用程序的代码、配置和依赖关系,将其变成容易使用的构建块,从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。容器还赋予我们对资源更多的精细化控制能力,让我们的基础设施效率更高。 特性 容器 虚拟机 启动 秒级 分钟级 硬盘使用 一般为MB 一般为GB 性能 接近原生 弱于 系统支持量 单机支持上千个容器 一般是几十个 Docker中包括三个基本的概念 Image (镜像) Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数

docker学习笔记(一)

女生的网名这么多〃 提交于 2019-11-30 03:21:56
久仰docker大名,却一直没有实际接触过。了解它的人把它描述为万能,传呼起身。没接触过它的人一脸懵。最近希望重新搭建一下服务器,趁机学习一下docker。 如果文章内容有问题,欢迎评论或与我进行讨论(请注明原因): mail: wgh0807@qq.com 微信: hello-wgh0807 qq: 490536401 0. 什么是容器? 菜鸟教程《Docker教程》是这样说的: Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 Docker官方是这样描述的: 容器是一个标准的软件单元,它将代码及其所有依赖关系打包,以便应用程序从一个计算环境快速可靠地运行到另一个计算环境。Docker容器映像是一个轻量级,独立的可执行软件包,包含运行应用程序所需的一切:代码,运行时,系统工具,系统库和设置。 容器映像在运行时成为容器,在Docker容器的中,映像在 Docker Engine 上运行时成为容器。适用于基于Linux和Windows的应用程序,无论基础架构如何,容器化软件都将始终运行相同

中国人寿如何基于容器搭建金融PaaS云平台

天大地大妈咪最大 提交于 2019-11-30 02:50:30
中国人寿作为著名的传统金融企业,在采纳容器、搭建PaaS平台的过程中遇到了许多挑战,也积累了宝贵的经验。中国人寿的技术负责人分享了他们的心路历程和实践心得,以及存储、网络、CI/CD、微服务、数据库拆分等具体技术细节和经验。 6月28日,Rancher Labs在北京举办了Container Day 2018容器技术大会。在大会上,Rancher Labs CEO及联合创始人梁胜博士、中国人寿研发中心开发五部副总经理王川、技术处高级经理郑晓勇、开发五部云计算架构师张青南、ZStack CEO及创始人张鑫进行了一场圆桌讨论。 本文整理摘取自圆桌讨论环节的内容,由中国人寿的嘉宾分享了中国人寿使用容器技术、搭建金融PaaS云平台的心路历程,以及存储、网络、CI/CD、微服务、数据库拆分等具体技术细节和经验。 中国人寿容器使用情况如何? 中国人寿从2016年底开始做技术调研,于2017年正式开始利用容器技术搭建金融PaaS云平台,用了半年多的时间完成了两朵云环境的搭建,一朵是开发测试的云环境,一朵是生产的云环境。中国人寿在开发测试云环境里做了持续集成,两朵云之间通过持续交付进行打通。最后又用了半年多时间在内部进行推广。 中国人寿的容器使用已经比较深入了。开发团队Java类的应用基本全部在开发测试云上进行了容器化,这占中国人寿总应用数量的一半以上。在生产云环境上,从2017年底开始

Kubernetes监控实践

◇◆丶佛笑我妖孽 提交于 2019-11-30 02:47:56
一、Kubernetes介绍 Kubernetes(K8s)是一个开源平台,能够有效简化应用管理、应用部署和应用扩展环节的手动操作流程,让用户更加灵活地部署管理云端应用。 作为可扩展的容错平台,K8s几乎能够部署在所有基础设施中,与Google Cloud、MS Azure及AWS等公有云、私有云、混合云、服务器集群、数据中心等完美兼容。Kubernetes最大的亮点在于支持容器自动部署和自动复制。这也是大量云端微服务基础设施部署在K8s上的原因。 二、K8s由来 K8s最初是由Google工程师设计开发的,于2014年上线并开源,目前由来自微软、红帽、IBM及Docker等软件巨头的社区贡献者维护升级。 Google不仅开源了公司整个基础设施在容器中的运行方式,还积极开发Linux容器技术,支撑Google所有云服务。K8s是基于云平台15年的生产工作负载运行经验设计出来的,用于处理成千上万个容器。Google每周部署20多亿个容器。在K8s上线前,Google主要通过内部开发平台Borg进行容器部署。Borg是大型内部集群管理系统,运行了无数应用和集群任务,多年的开发经验奠定了K8s技术的基础。 三、K8s工作原理 K8s本质上是分部在不同机器上的容器化应用的协调系统,目的是帮助开发人员通过K8s的可预测性、可扩展性和高可用性管理容器化应用和服务的整个生命周期

JAVA记录 Spring 两大特性

末鹿安然 提交于 2019-11-30 02:46:48
1.IOC控制反转 Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。 其实IoC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动的了,被动的等待IoC容器来创建并注入它所需要的资源了。   IoC很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;即由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。 2.依赖注入 DI—Dependency Injection,即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能

用 OneAPM Cloud Insight 监控 Docker 性能

不想你离开。 提交于 2019-11-30 01:26:57
Docker 是构建和部署软件的一个新兴的轻量级的平台,也是一个减轻替代虚拟机的容器。Docker 通过给开发者提供兼容不同环境的镜像,成为解决现代基础设施的持续交付的一个流行的解决方案。 和虚拟机一样,容器也需要一个新的监测方法。现在有许多开源的监控软件,但部署麻烦,需要许多人力来进行后期维护,Luckily,如果你是一个 OneAPM 用户,现在你可以利用我们最新的应用产品: Cloud Insight 。 如果你已经安装了 Cloud Insight 探针实现了 服务器监控 ,接下来只需要配置一个简单的 YAML 文件,就可以实现监控不同 containers 的性能指标。 ####Docker 性能监控是怎么实现的 Docker 性能监控 的最简单的方法是在直接主机上运行 Cloud Insight,它可以访问容器,尤其是如果您在现有的全面的主机操作系统上部署 Docker,沿用现有的应用程序(如数据库)等。 探针在 Docker 环境中的位置如下: 由于 Docker 使用现有的内核结构(namespace 和 cgroup )来运行容器,Cloud Insight 使用本地 cgroup 的统计指标来收集 CPU,内存,运行/停止的 containers 的数量。 虽然这是监测 Docker 最简单的方法,但之后我们还会提供在 Docker

spring ioc容器的原理

你离开我真会死。 提交于 2019-11-30 00:34:43
1. IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。 图1:软件系统中耦合的对象 如果我们打开机械式手表的后盖,就会看到与上面类似的情形,各个齿轮分别带动时针、分针和秒针顺时针旋转,从而在表盘上产生正确的时间。图1中描述的就是这样的一个齿轮组,它拥有多个独立的齿轮,这些齿轮相互啮合在一起,协同工作,共同完成某项任务。我们可以看到,在这样的齿轮组中,如果有一个齿轮出了问题,就可能会影响到整个齿轮组的正常运转。 齿轮组中齿轮之间的啮合关系,与软件系统中对象之间的耦合关系非常相似。对象之间的耦合关系是无法避免的,也是必要的,这是协同工作的基础。现在,伴随着工业级应用的规模越来越庞大,对象之间的依赖关系也越来越复杂,经常会出现对象之间的多重依赖性关系,因此,架构师和设计师对于系统的分析和设计,将面临更大的挑战。对象之间耦合度过高的系统,必然会出现牵一发而动全身的情形。 图2:对象之间复杂的依赖关系 耦合关系不仅会出现在对象与对象之间,也会出现在软件系统的各模块之间,以及软件系统和硬件系统之间。如何降低系统之间、模块之间和对象之间的耦合度,是软件工程永远追求的目标之一。 为了解决对象之间的耦合度过高的问题 ,软件专家Michael Mattson提出了IOC理论,用来实现对象之间的“解耦”

太全了|万字详解Docker架构原理、功能及使用

霸气de小男生 提交于 2019-11-30 00:03:14
一、简介 1、了解Docker的前生LXC LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。 与传统虚拟化技术相比,它的优势在于: (1)与宿主机使用同一个内核,性能损耗小; (2)不需要指令级模拟; (3)不需要即时(Just-in-time)编译; (4)容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制; (5)避免了准虚拟化和系统调用替换中的复杂性; (6)轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。 总结:Linux Container是一种轻量级的虚拟化的手段。 Linux Container提供了在单一可控主机节点上支持多个相互隔离的server container同时执行的机制。Linux Container有点像chroot,提供了一个拥有自己进程和网络空间的虚拟环境,但又有别于虚拟机,因为lxc是一种操作系统层次上的资源的虚拟化。 2、LXC与docker什么关系? docker并不是LXC替代品,docker底层使用了LXC来实现,LXC将linux进程沙盒化,使得进程之间相互隔离

STL,ATL,WTL的联系与区别

谁说我不能喝 提交于 2019-11-29 23:47:58
STL,ATL,WTL的联系与区别 STL 即 Standard Template Library STL(标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。 STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。以下笔者就简单介绍一下STL各个部分的主要特点。 原文见:http://www.csdn.net/Develop/article/16%5C16310.shtm 从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器

k8s读书笔记 k8s入门

不想你离开。 提交于 2019-11-29 23:35:41
第一章 k8s入门 k8s是什么 功能上:容器编排引擎的事实标准。《每天五分钟玩转kubernetes》 Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.《 https://kubernetes.io/ 》 架构上:它是一个全新的基于容器技术的分布式架构领先方案。《k8s权威指南》 一些概念: 几乎所有的资源对象都可以通过kubectl命令进行增删改查等操作并将其保存在etcd存储中进行永久化存储 集群中的角色: Node:工作负载节点,kubelet:负责容器的创建 和Master的交互;kube-proxy:实现service的通信和负载均衡机制的组件;docker:docker引擎 Master:控制节点;高可用方案建议用3个节点;部署的进程:kube-api-server