容器技术

Docker 01 前言 (可以不看)

萝らか妹 提交于 2020-03-10 16:40:39
Docker简介 什么是虚拟化? 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。 在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件 对资源充分利用。 虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化、桌面虚拟化、服务虚拟化、虚拟机等等。 什么是Docker? Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为Docker Inc。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。 Docker

关于 Kubernetes 规划的灵魂 n 问

岁酱吖の 提交于 2020-03-10 14:03:32
作者 | 易立 阿里云资深技术专家 导读 :Kubernetes 已经成为企业新一代云 IT 架构的重要基础设施,但是在企业部署和运维 Kubernetes 集群的过程中,依然充满了 复杂性和困扰 。 阿里云容器服务自从 2015 年上线后,目前 托管着上万的 K8s 集群 来支撑全球各地的客户。我们对客户在规划集群过程中经常会遇见的问题,进行一些分析解答。试图缓解大家的“ 选择恐惧症 ”。 如何选择 Worker 节点实例规格? 裸金属还是虚拟机? 在 Dimanti 2019 年的容器调查报告中,对专有云用户选择裸金属服务器来运行容器的主要原因进行了分析。 选择裸金属服务器的最主要原因( 超过 55% )是:传统虚拟化技术 I/O 损耗较大;对于 I/O 密集型应用,裸金属相比传统虚拟机有更好的性能表现; 此外近 36% 的客户认为:裸金属服务器可以降低成本 。大多数企业在初始阶段采用将容器运行在虚拟机的方案,但是当大规模生产部署的时候,客户希望直接运行在裸金属服务器上来减少虚拟化技术的 license 成本(这也常被戏称为“VMWare 税”); 还有近 30% 的客户因为在物理机上部署有更少的额外资源开销 (如虚拟化管理、虚拟机操作系统等);还有近 24% 的客户选择的原因是:可以有更高的部署密度,从而降低基础设施成本; 超过 28% 的客户认为

容器生态系统

怎甘沉沦 提交于 2020-03-10 10:31:17
一谈到容器,大家都会想到 Docker。 Docker 现在几乎是容器的代名词。确实,是 Docker 将容器技术发扬光大。同时,大家也需要知道围绕 Docker 还有一个生态系统。Docker 是这个生态系统的基石,但完善的生态系统才是保障 Docker 以及容器技术能够真正健康发展的决定因素。 大致来看,容器生态系统包含核心技术、平台技术和支持技术。 下面分别介绍。 容器核心技术 容器核心技术是指能够让 container 在 host 上运行起来的那些技术。 这些技术包括容器规范、容器 runtime、容器管理工具、容器定义工具、Registry 以及 容器 OS,下面分别介绍。 容器规范 容器不光是 Docker,还有其他容器,比如 CoreOS 的 rkt。为了保证容器生态的健康发展,保证不同容器之间能够兼容,包含 Docker、CoreOS、Google在内的若干公司共同成立了一个叫 Open Container Initiative(OCI) 的组织,其目是制定开放的容器规范。 目前 OCI 发布了两个规范:runtime spec 和 image format spec。 有了这两个规范,不同组织和厂商开发的容器能够在不同的 runtime 上运行。这样就保证了容器的可移植性和互操作性。 容器 runtime runtime 是容器真正运行的地方。runtime

Docker生态系统

狂风中的少年 提交于 2020-03-10 10:28:07
鸟瞰容器生态系统 容器生态系统 : 容器核心技术,容器平台技术,容器技术支持 容器核心技术 :能够让Container(容器),在host上运行起来的那些技术 包括:(容器规范、容器runtime、容器管理工具、容器定义工具、Registries、容器OS) 容器规范: runtime spec(运行规范)和image format spec(镜像格式规范) 这两个规范可让不同组织和厂商开发的容器能够在不同的runtime上运行,保证了容器的可移植性和互操作性。 容器runtime: 容器真正运行的地方,runtime和操作系统的kernel紧密协作,为容器提供运行环境。 lxc (linux上的老牌容器runtime)、 runc (docker自己开发的容器runtime,现在磨人的runtime)、 rkt (CoreOS开发的runtime)是目前主流的三种容器runtime。 容器管理工具: 对内与runtime交互,对外为用户提供interface lxd : 是lxc对应的管理工具 docker engine : runc对应的管理工具,包含后台deamon和cli两个部分 rkt cli : rkt的管理工具 容器定义工具: 允许用户定义容器的内容和属性,使容器能够被保存、共享和创建 docker image : docker容器的模板

云原生周报:第 3 期

此生再无相见时 提交于 2020-03-10 10:03:50
本文首发于:微信公众号「云原生实验室」,公众号ID:cloud_native_yang。 这是云原生周报第 3 期,主要分享云原生社区最新开源项目和相关资讯。 如果你有什么优秀项目和资讯,欢迎向我投稿,投稿邮箱:yangchuansheng33@gmail.com。如果你想与大牛一起探讨云原生相关技术问题,可以添加我的微信后拉你进入云原生交流群,我的微信号是:yangchuansheng572887。 1. 开源项目推荐 diving : 基于 dive 分析 docker 镜像,界面化展示了镜像每层的变动(增加、修改、删除等)、用户层数据大小等信息。便捷获取镜像信息和每层镜像内容的文件树,可以方便地浏览镜像信息。对于需要优化镜像体积时非常方便。 Wave : Kubernetes 的配置文件有两种,一种是 ConfigMap,用来存储明文;另一种是 Secret,用来存储密文。这两种配置文件应用都比较广泛,但遗憾的是,目前它们在大多数场景下都不支持热更新,只有当 ConfigMap 挂载为 Volume 时,才能支持热更新,其他场景均不支持。Wave 的做法比较机智,它向 API server 订阅来自指定的 Deployment(通过 annotations 识别) 的事件,一旦某个 Deployment 被执行了任何操作(Create/Read/Update/Delete)

docker概述

我的未来我决定 提交于 2020-03-09 20:02:59
虚拟化: varmvare,virtualbox docker:container技术(以内核为支撑进行虚拟机)。不用安装操作系统直接通过宿主机的os虚拟化出应用 Docker 是一个 开源 的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现 虚拟化 。容器是完全使用 沙箱 机制,相互之间不会有任何接口; 一个完整的Docker有以下几个部分组成: dockerClient客户端 Docker Daemon守护进程 Docker Image镜像 DockerContainer容器 起源 Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于 go语言 并遵从Apache2.0协议开源。 Docker自2013年以来非常火热,无论是从 github 上的代码活跃度,还是 Redhat 在RHEL6.5中集成对Docker的支持, 就连 Google 的 Compute Engine 也支持 docker 在其之上运行。 一款开源软件能否在商业上成功,很大程度上依赖三件事 - 成功的 user case(用例), 活跃的社区和一个好故事。 dotCloud 自家的 PaaS 产品建立在 docker 之上,长期维护且有大量的用户

Docker学习笔记2

纵然是瞬间 提交于 2020-03-09 19:10:48
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 官网: https://www.docker.com/ 相关资料: 1、Docker入门教程 http://dockone.io/article/111 2、Docker_百度百科 http://baike.baidu.com/view/11854949.htm 3、史上最全Docker资料集粹 http://special.csdncms.csdn.net/BeDocker/ 4、Docker - 话题精华 - 知乎 http://www.zhihu.com/topic/19950993/top-answers 5、docker 简明教程 | 简果网 http://www.simapple.com/docker-tutorial Docker与虚拟机比较 作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势: Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快得多。 Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器。 Docker通过类似Git的操作来方便用户获取、分发和更新应用镜像

【Docker】Docker概述

℡╲_俬逩灬. 提交于 2020-03-09 19:07:14
/*--> */ /*--> */ 【Docker】   Docker可以说是近几年非常热门的技术之一了。不管是别人敦促我还是从自己的想法来说,都觉得Docker这玩意儿肯定是要好好学习一下的,无奈没啥时间专门播出来给Docker,一直以来都是要用了就问人或者百度百度,用的也都是最简单的一些功能。   但是始终觉得,任何一种知识,不系统性地学习一下是掌握不好的。所以这次特地按照《第一本Docker书》这本新手向的书为框架,系统性地学习学习。 ■  参考好文   ①10图了解Docker简单原理:http://dockone.io/article/783 ■  什么是Docker   如果从技术实现细节(即使不是细节,是大体框架)而言,这个命题估计可以写上三天三夜,何况我也写不出来。但是好在作为一个使用者,(至少在目前阶段),我们只需要了解最基本的一些概念,对Docker这个东西有些感觉就好了。各种Docker介绍的书或者文档都把Docker写得特别高大上,然而在我一个小白的角度看来,docker(容器)就是个轻型虚拟机嘛。。   服务器的演变历程是从物理机编程虚拟机,再由虚拟机变成Docker这类容器技术。所以虚拟机到Docker可谓是一脉相承的。   毫无疑问Docker也肯定是要运行在物理主机上的。从架构来看,通过docker进行工作需要物理主机上有一个守护进程

Tomcat是如何运行的?整体架构又是怎样的?

北战南征 提交于 2020-03-08 23:53:55
在许多的高端开发的岗位中都会或多或少有要求面试人员要研究过一些常用中间件源码。这是因为一切的秘密都是藏在源码中,阅读源码能够让我们对框架或者中间件的理解更加深刻,而我们也能够在源码的研究中获得其中一些优秀的设计方式。而我们的中间件和源码那么多,我们该从何入手呢?其实大部分的中间件或者框架都有一些共性的部分,例如网络编程、多线程、反射和类加载等技术。所以深入研究透了一两个中间件的话,那么再回过头来看其它的中间件,那么就会很容易理解它里面所用的技术以及原理。而作为一个老牌的WEB端框架Tomcat,无论是其整体的架构设计,还是其内在的一些技术灵活应用,都值得我们一看。 在学习框架的时候,我一般都是对这个框架有一个整体的认识。知道它整体是如何运行的,然后再深入其中某部分进行研究,这样会事半功倍。 整体架构 我们想要了解一个框架,首先要了解它是干什么的,Tomcat我们都知道,是用于处理连接过来的Socket请求的。那么Tomcat就会有两个功能: 对外处理连接,将收到的字节流转化为自己想要的Request和Response对象 对内处理Servlet,将对应的Request请求分发到相应的Servlet中 那么我们整体的骨架就出来了,Tomcat其实就分为两大部分,一部分是连接器(Connnector)处理对外连接和容器(Container)管理对内的Servelet。大体的关系图如下

云原生技术的了解

笑着哭i 提交于 2020-03-08 18:55:45
云原生技术的了解 参考资料 迁移到云原生应用架构 kubernetes 手册 etcd 架构与实现解析 什么是云原生 云原生应用架构的几个主要特征: 符合12因素应用 面向微服务架构 自服务敏捷架构 基于API的协作 抗脆弱性 到了2015年Google主导成立了云原生计算基金会(CNCF),起初CNCF对云原生(Cloud Native)的定义包含以下三个方面: 应用容器化 面向微服务架构 应用支持容器的编排调度 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括 容器 、 服务网格 、 微服务 、 不可变基础设施 和 声明式API 。 这些技术能够构建 容错性好 、 易于管理 和 便于观察 的 松耦合系统 。 云原生本身甚至不能称为是一种架构,它首先是一种基础设施,运行在其上的应用称作云原生应用,只有符合云原生设计哲学的应用架构才叫云原生应用架构。 云原生系统的设计理念如下: 面向分布式设计(Distribution):容器、微服务、API 驱动的开发; 面向配置设计(Configuration):一个镜像,多个环境配置; 面向韧性设计(Resistancy):故障容忍和自愈; 面向弹性设计(Elasticity):弹性扩展和对环境变化(负载)做出响应; 面向交付设计(Delivery):自动拉起,缩短交付时间;