容器技术

回顾 | Kubernetes SIG-Cloud-Provider-Alibaba 首次网研会(含 PPT 下载)

久未见 提交于 2020-02-22 06:34:20
作者 | 汤志敏、谢瑶瑶 会议完整视频回顾: https://www.bilibili.com/video/av88668762 2 月 12 日,阿里云和 CNCF 联合举办了线上研讨会,首次完整介绍了阿里云对 Kubernetes 社区的布局,包括了 10 个类别,20 多个开源项目,提供了完整的 Kubernetes 生命周期管理。本文汇集了此次会议完整视频回顾及资料下载,并整理了会议上未能及时回答的问题,希望能够对大家有所帮助~ 关注“阿里巴巴云原生”公众号,后台回复 “会议” 即可下载 PPT。 什么是 SIG Cloud Provider 随着时间的发展,越来越多的企业在生产环境使用 Kubernetes。Kubernetes 被广为接受,离不开其良好的设计和繁荣的社区。目前围绕着 Kubernetes 已经有 20 个左右的兴趣小组(SIG),SIG Cloud Provider 则是 Kubernetes 的重要兴趣小组之一,致力于推动所有云厂商以标准的能力提供 Kubernetes 服务。 SIG-Cloud-Provider-Alibaba 是 SIG Cloud Provider 在国内唯一的子项目。 Cloud Provider SIG 是 Kubernetes 的云厂商兴趣小组,致力于让 Kubernetes 的生态系统往厂商中立的方向演进

[置顶] Effective STL 学习笔记

久未见 提交于 2020-02-21 11:39:33
看Effective STL 作的一些笔记,希望对各位有帮助。 以下是50条条款及相关解释。 容器 1. 慎重选择容器类型,根据需要选择高效的容器类型。 2. 不要试图编写独立于容器类型的代码。 3. 确定容器中的对象拷贝正确而高效。也就是防止在存在继承关系时发生剥离。 4. 调用empty而不是检查size()是否为0来判断容器是否为空。 原因是调用empty比检查size()更加高效。 5. 尽量使用区间成员,而不是多次使用与之对应的单元素成员函数,原因是这样更加高效。 如尽量使用vector的 assign 或 insert 成员函数,而不是一直使用 push_back 。 6. 小心C++编译器最烦人的分析机制 。如 下面的代码中的第二句被C++解释成为了函数声明,这很奇怪但又符合标准。 ifstream dataFile ("ints.dat") list <int> data( istream_iterator<int>(dataFile), istream_iterator<int>() ); // 被解释成为函数声明 正确的写法是这样的,注意第一参数两边的括号: list <int> data( ( istream_iterator<int>(dataFile) ) , istream_iterator<int>() ); 这是因为C+

容器生态系统

这一生的挚爱 提交于 2020-02-21 11:32:56
1.容器的核心技术: (1)容器规范:由docker、coreos、google在内的若干公司共同成立了的OCI的组织,发布了runtime spec和image format spec两个规范,使得不同组织和厂商开发的容器能够在不同的runtime上运行,这样就保证了容器的可移植性和互操作性。 (2)容器runtime:runtime是容器真正运行的地方。runtime需要跟操作系统的内核紧密合作,为容器提供运行环境,容器只有在runtime中才可以运行。lxc、runc和rkt是目前主流的三种容器runtime,现在docker默认的是runc (3)容器管理技术:用户通过工具来管理容器。容器管理工具对内与runtime交互,对外为用户提供接口。lxd是lxc对应的管理工具,runc的管理工具是docker engine。docker engine包含后台的deamon和cli两个部分。一般提到的docker,指的就是docker engine (4)容器定义工具:容器定义工具允许用户定义容器的内容和属性,这样容器能够被保存、共享和重建 (5)registry:容器是通过image创建的,需要有一个仓库存放他们 (6)容器OS:容器OS是专门运行容器的操作系统,与常规系统想必,OS体积更小,启动更快,内核使用host的内核 2.容器平台技术 (1)容器编排引擎:通常包括容器管理

k8s CNI插件简单了解

泪湿孤枕 提交于 2020-02-20 23:48:05
Kubernetes网络模型本身对某些特定的网络功能有一定要求,但在实现方面也具有一定的灵活性。业界已经有不少不同的网络方案,来满足特定的环境和要求。 CNI(container network interface)是容器网络接口,它是一种标准设计和库,为了让用户在容器创建或者销毁时都能够更容易的配置容器网络。 目前比较流行的CNI插件:Flannel、Calico、Weave、Canal(技术上是多个插件的组合)。这些插件即可以确保满足Kubernetes的网络要求,又能为kubernetes集群管理员提供他们所需的某些特定的网络功能。 背景 容器网络 是容器选择连接到其他容器、主机和外部网络(如Internet)的机制。容器的runtime提供了各种网络模式,每种模式都会产生不同的效果。例如,Docker默认情况下可以为容器配置以下网络: none:将容器添加到一个容器专门的网络堆栈中,没有对外连接。 host:将容器添加到主机的网络堆栈中,没有隔离。 default bridge:默认网络模式。每个容器可以通过IP地址互相连接。 自定义网桥:用户定义的网桥,具有更多的灵活性、隔离性和其他便利功能。 Docker还可以让用户通过其他驱动程序和插件,来配置更高级的网络(包括多主机覆盖网络)。 CNI( https://github.com/containernetworking

spring ioc 源码解析

∥☆過路亽.° 提交于 2020-02-18 15:25:09
Spring IOC的初始化流程 1、项目从 ApplicationContext app = new ClassPathXmlApplicationContext(“applicationContext.xml”); 2、找到工厂实现类【ClassPathXmlApplicationContext】中对应的构造方法,执行ioc容器初始化: 如下: *使用给定的父类创建一个新的ClassPathXmlApplicationContext, 从给定的XML文件中加载定义。 * @param configLocations资源位置数组 是否自动刷新上下文, 加载所有bean定义并创建所有的单例。 *或者,在进一步配置上下文之后手动调用refresh。 * @param父上下文 如果上下文创建失败,@抛出BeansException * @see # refresh () <ignore_js_op> 3、找到工厂抽象父类【AbstractApplicationContext】中的【refresh】方法: 3.1.该方法实现解析xml配置文件内容,封装成BeanDefinition对象,注册到BeanFactory中 3.2.该方法实现一些基础组件的注册:bean后置处理器组件、监听器组件、国际化资源组件 3.3.该方法实现bean对象的真正实例化。细节:初始化全部【singleton

Docker01

假装没事ソ 提交于 2020-02-18 14:14:39
目录 1.Docker是什么 2.Docker与虚拟化 3.Docker虚拟化的好处 4.核心概念 5.CentOS7 安装docker(在线方式) 6.镜像 7.Docker容器 8.查看Docker容器内部信息 9.扩展 1.Docker是什么 Docker是一个由GO语言写的程序运行的“容器” ( Linux containers, LXCs ) , 它是完整的一套容器管理系统 Docker提供了一组命令 , 让用户更加方便直接地使用容器技术 , 而无需要过多关心底层内核技术 注 1 :什么是容器 一个容器就相当于一个虚拟机 注 2 :docker用途,目前有三大类 1. 提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境 2. 提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容 3. 组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构 2.Docker与虚拟化 传统来看,虚拟化既可以通过硬件模拟来实现,也可以通过操作系统软件来实现 而容器技术则更为优雅, 它充分利用了操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化 因此,有人甚至把它称为 “新一代的虚拟化”技术,并将基于容器打造的云平台亲切地称为“容器云”毫无疑问, Docker 正是众多容器技术中的佼佼者

spring、spring mvc以及IOC的阅读

懵懂的女人 提交于 2020-02-18 08:23:23
spring vs spring-mvc spring是应用级框架 spring mvc只是一个mvc框架 spring现在包含很多子模块,我们用的最多的是依赖注入。 spring模块可分为以下: Core Container: Data Access/Integration: Web: 其他,如AOP、Aspects、Test等: spring模块框架如下: 使用Spring框架的优点 像开发POJO类一样去开发企业应用程序 模块化管理 集成多种技术如ORM、logging、Quartz、JDK timers等 方便测试 使用Spring框架的缺点 第一、软件系统中由于引入了第三方IOC容器,生成对象的步骤变得有些复杂,本来是两者之间的事情,又凭空多出一道- 手续,所以,我们在刚开始使用IOC框架的时候,会感觉系统变得不太直观。 第二、由于IOC容器生成对象是通过反射方式,在运行效率上有一定的损耗。如果你要追求运行效率的话,就必须对此进行权衡,如WEB2.0。 第三、具体到IOC框架产品(比如:Spring)来讲,需要进行大量的配制工作,比较繁琐,对于一些小的项目而言,客观上也可能加大一些工作成本 第四、IOC框架产品本身的成熟度需要进行评估,如果引入一个不成熟的IOC框架产品,那么会影响到整个项目,所以这也是一个隐性的风险。 Spring IoC 1.两种容器: Spring

IOC和DI 控制反转和依赖注入

此生再无相见时 提交于 2020-02-18 08:20:30
首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/blog/1413846 1.1、IoC是什么   Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:   ●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。   ●为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。  

【docker】docker虚拟容器的使用大全

◇◆丶佛笑我妖孽 提交于 2020-02-18 07:22:21
Docker容器详解 Docker是基于Go语言开发的开源应用容器引擎,遵从Apache Licence 2.0协议,可以让开发者打包应用以及应用的依赖包到一个可移植的容器中,然后发布到各种发行版本的Linux系统上。 Docker简介 软件开发中最为麻烦的事情可能就是配置环境了。由于用户使用的操作系统具有多样性,即便使用跨平台的开发语言(如Java和Python)都不能保证代码能够在各种平台下都可以正常的运转,而且在不同的环境下我们安装的软件需要依赖的软件包也是不一样的。 那么问题来了,我们安装软件的时候可不可以把软件运行的环境一并安装?我们是不是可以把原始环境一模一样地复制过来呢? 虚拟机(virtual machine)就是带环境安装的一种解决方案,它可以在一种操作系统里面运行另一种操作系统,比如在Windows系统里面运行Linux系统,在macOS上运行Windows,而应用程序对此毫无感知。使用过虚拟机的人都知道,虚拟机用起来跟真实系统一模一样,而对于虚拟机的宿主系统来说,虚拟机就是一个普通文件,不需要了就删掉,对宿主系统或者其他的程序并没有影响。但是虚拟机通常会占用较多的系统资源,启动和关闭也非常的缓慢,总之用户体验并没有想象中的那么好。 Docker属于对Linux容器技术(LXC)的一种封装(利用了Linux的namespace和cgroup技术)

Docker介绍

六眼飞鱼酱① 提交于 2020-02-17 07:01:15
Docker介绍 Docker 是一个完全开源的应用容器引擎,基于Go语言进行开发。让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。容器化技术不只有Docker,但目前来说Docker可以是容器化的代名词. Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版) 上诉话可以总结为: 完全开源的应用容器引擎,基于Go语言进行开发。 容器完全使用沙箱机制,容器开销极低 Docker具备一定的虚拟化职能 目前Docker是容器化的代名词 一个完整的Docker有以下几个部分组成: DockerClient客户端 Docker Daemon守护进程 Docker Image镜像 DockerContainer容器 Docker的应用场景 Web 应用的自动化打包和发布。 自动化测试和持续集成、发布。 在服务型环境中部署和调整数据库或其他的后台应用。 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。 来源: CSDN 作者: 刘丨丨 链接: https://blog.csdn.net