容器技术

Docker容器的详解与配置

我只是一个虾纸丫 提交于 2019-11-26 04:57:56
本章大纲: 1.什么是Docker 2.Docker的三大核心是什么 3.Docker的概念及安装 一、揭开Docker的神秘面纱 1.Docker是什么 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。 Docker作为开源社区最火爆的项目,它是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”,docker的全部源代码都在https://github.com/docker 进行相关维护,其官网是: https://www.docker.com 。 docker之所以拥有众多优势,与操作系统虚拟化自身的特点是分不开的,传统虚拟机需要有额外的虚拟机管理程序和虚拟机操作系统层,而docker是直接在操作系统层面之上实现的虚拟化,二者的工作示意图如下: 2.为什么要用Docker * Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现“这段代码在我机器上没问题啊”这类问题;——一致的运行环境 * 可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。——更快速的启动时间 * 避免公用的服务器,资源会容易受到其他用户的影响。——隔离性 * 善于处理集中爆发的服务器使用压力;——弹性伸缩,快速扩展

k8s pod和容器概念的区分

痴心易碎 提交于 2019-11-26 03:53:43
一:在探讨pod和容器的区别之前,我们先谈谈为什么k8s会使用pod这个最小单元,而不是使用docker的容器,k8s既然使用了pod,当然有它的理由。 1:更利于扩展 k8s不仅仅支持Docker容器,也支持rkt甚至用户自定义容器,为什么会有这么多不同的容器呢,因为容器并不是真正的虚拟机,参考我之前的博客,docker的一些概念和误区总结,此外,Kubernetes不依赖于底层某一种具体的规则去实现容器技术,而是通过CRI这个抽象层操作容器,这样就会需要pod这样一个东西,pod内部再管理多个业务上紧密相关的用户业务容器,就会更有利用业务扩展pod而不是扩展容器。 2:更容易定义一组容器的状态 如果我们没有使用pod,而是直接使用一组容器去跑一个业务呢,那么当其中一个或者若干个容器出现问题呢,我们如何去定义这一组容器的状态呢,通过pod这个概念,这个问题就可以很好的解决,一组业务容器跑在一个k8s的pod中,这个pod中会有一个pause容器,这个容器与其他的业务容器都没有关系,以这个pause容器的状态来代表这个pod的状态, 3:利于容器间文件共享,以及通信。 pause容器有一个ip地址,和一个存储卷,pod中的其他容器共享pause容器的ip地址和存储,这样就做到了文件共享和互信。 二:pod和容器的区别 总结,pod是k8s的最小单元,容器包含在pod中

Docker高级网络实践之 玩转Linux network namespace & pipework

限于喜欢 提交于 2019-11-26 03:41:31
前言  在上一篇文章中 《“深入浅出”来解读Docker网络核心原理》 大家了解了Docker中libnetwrok提供的4种驱动,它们各有千秋,但实际上每一种方式都有一定的局限性。假设需要运营一个数据中心的网络,我们有许多的宿主机,每台宿主机上运行了成千上万个Docker容器,如果使用4种网络驱动的话会是怎么样的呢,我们来分析一下: 使用host驱动可以让容器与宿主机共用同一个网络栈,这么做看似解决了网络问题,可实际上并未使用network namespace的隔离,缺乏安全性。 使用Docker默认的bridge驱动,容器没有对外IP,只能通过NAT来实现对外通信。这种方式不能解决跨主机容器间直接通信的问题,难以满足复杂场景下的业务需求。 使用overlay驱动,可以用于支持跨主机的网络通信,但必须配合swarm进行配置和使用才能实现跨主机的网络通信。 使用null驱动实际上不进行任何网络配置。  可见,为了实现数据中心大量容器间的跨主机网络通信,为了更灵活地实现容器间网络的共享与隔离,也为了在管理成千上万个容器时可以更加自动化地进行网络配置,我们需要来了解更高级的网络方案。  本文及后期的文章将通过一些工具和额外的操作来突破Docker网络原有的限制,实现一些更高级的功能来满足实际运用中的复杂需求。 把Linux network namespace玩起来

兼容认证 | BoCloud博云与F5携手加速容器云生产落地

馋奶兔 提交于 2019-11-26 01:54:51
容器技术凭借灵活、轻量,以及能够更好地支持应用微服务化改造,实现应用快速迭代的特性而备受市场关注。伴随数字化转型进程的加深与推进,越来越多的行业用户,包括金融、能源、制造等行业企业,开始考虑将采用容器技术构建开发平台,以实现敏捷开发,提高业务效率。 随着容器技术的广泛应用,容器云也曝露出一些问题和挑战,包括兼容性与稳定性问题、隔离与安全问题、管理复杂性问题、大规模并行服务管理问题。2018年,BoCloud博云与F5 Networks携手发布了基于容器技术的联合解决方案,借助容器云平台在弹性伸缩、轻量部署、快速部署等方面的优势,满足客户在数字化时代对IT系统高效支撑核心业务的要求。 经BoCloud博云和F5 Networks共同测试,博云容器云产品BeyondContainer、与F5 Networks,在以下方面实现兼容性对接: F5 Networks负载BeyondContainer,保障高可用和负载均衡; BeyondContainer兼容F5 Networks,实现应用发布信息的自动注册和更新; BeyondContainer兼容F5 Networks,实现应用的灰度发布和蓝绿发布; BeyondContainer对接F5 Networks,实现应用服务可视化。 测试结果显示博云容器云产品BeyondContainer与F5 Networks可以共同稳定运行,相互兼容。

Containers vs Serverless:本质区别是什么?

风格不统一 提交于 2019-11-26 00:18:39
在云计算领域,容器和无服务器计算已经占据了发展前列。 作者 | Emra Samdan 翻译 | bocloudresearch 一点历史 在不久以前,应用程序的开发、部署和维护要比现在复杂得多,耗时也多。在最初,维护不仅需要修复应用程序的代码,还需要修复对物理机器的支持。保持服务器、硬件和软件的更新也是非常关键的任务。 在本世纪初,一种名为“基础设施即服务(IaaS)”的新模式迅速流行起来。IaaS提供了从第三方提供商租用远程服务器和虚拟机的可能性,这些提供商可以完全负责管理硬件、网络和预订。 IaaS出现之后,消除开发人员的所有非编码职责来简化开发人员工作,这一想法推动了新方法、模型和服务的创新。 容器是什么? Docker的官方网站提供了以下简短而优雅的定义:“容器是一个标准的软件单元,它将代码及其所有依赖项打包,从而使应用程序在不同的计算环境之间快速、可靠地运行。换句话说,通过使用容器,开发人员可以确保他们的应用程序可以在任何云平台或本地服务器上运行。在某些方面,容器类似于虚拟机,比如两者都是隔离资源。但是,虚拟机模拟物理设备,而容器创建应用程序层的抽象。 无服务器计算是什么? 在无服务器计算中,整个应用程序或应用程序的一部分被解耦为多个函数,每个函数都响应诸如HTTP请求、新消息到达消息队列、或在存储中保存或修改新对象等时间触发的。平台可以在特定的时间或周期运行这些函数

Kubernetes+Docker+Istio 容器云实践

China☆狼群 提交于 2019-11-25 23:43:10
随着社会的进步与技术的发展,人们对资源的高效利用有了更为迫切的需求。近年来,互联网、移动互联网的高速发展与成熟,大应用的微服务化也引起了企业的热情关注,而基于Kubernetes+Docker的容器云方案也随之进入了大众的视野。开普勒云是一个基于Kubernetes+Docker+Istio的微服务治理解决方案。 一、Microservices 1.1 解决大应用微服务化后的问题 现在各大企业都在谈论微服务,在微服务的大趋势之下技术圈里逢人必谈微服务,及微服务化后的各种解决方案。 1.2 当我们在讨论微服务的时候我们在讨论什么? 使用微服务架构有很多充分的理由,但天下没有免费的午餐,微服务虽有诸多优势,同时也增加了复杂性。团队应该积极应对这种复杂性,前提是应用能够受益于微服务。 1.2.1 如何微服务化的问题 微服务要如何拆分 业务API规则 数据一致性保证 后期可扩展性考虑 当然这不是本文主要讨论的问题,我不讲微服务具体要如何拆分,每个企业每个应用的情况都不太一样,适合自己的方案就是最好的拆分方案。我们主要来解决微服务化后所带来的一些问题。 1.2.2 微服务化后带来的问题 环境一致性 如何对资源快速分配 如何快速度部署 怎么做基本监控 服务注册与发现 负载均衡如何做 以上都是大应用微服务化所需要解决的基础问题,如果还按照传统的方式使用虚拟机来实现,资源开支将会非常大

Istio在UAEK中的实践改造之路

烂漫一生 提交于 2019-11-25 23:42:30
为什么需要ServiceMesh UCloud App Engine on Kubernetes(后简称“UAEK”)是UCloud内部打造的一个基于Kubernetes的,具备高可用、跨机房容灾、自动伸缩、立体监控、日志搜集和简便运维等特性计算资源交付平台,旨在利用容器技术提高内部研发运维效率,让开发能将更多的精力投入在业务研发本身,同时,让运维能更从容应对资源伸缩、灰度发布、版本更迭、监控告警等日常工作。 考虑到Kubernetes本来就是为自动部署、伸缩和容器化而生,再加上UCloud UAEK团队完成IPv6组网调研和设计实现后,一个成熟的容器管理平台很快正式在北京二地域的多个可用区上线了。相比于过去申请管理虚拟机部署应用服务,Kubernetes确实带来了实实在在的便利,例如方便灵活的自动伸缩以及×××的微服务架构,只需简单配置即可实现跨可用区容灾等。 然而,微服务化又为系统架构带来许多新的问题,例如服务发现、监控、灰度控制、过载保护、请求调用追踪等。大家已经习惯自行运维一组Zookeeper集群用以实现服务发现和客户端负载均衡,使用UAEK后能否免去运维Zookeeper的工作?为了监控业务运行状态,大家都需要在代码里加上旁路上报逻辑,使用UAEK是否能无侵入零耦合地实现监控上报? 此外,过去很多系统模块间调用缺少熔断保护策略,波峰流量一打就瘫

容器技术概述

*爱你&永不变心* 提交于 2019-11-25 23:24:41
容器技术是这两年热门的话题,因为容器技术给我们带来了很多方便的地方,节约了不少成本,不管是在运维还是开发上。而如今最热门的开源容器工具就是docker了,虽然不少人已经使用过docker,但是如果不是老一辈的程序员的话,也许还不太能感受到为什么容器技术会带来许多的便捷?这一点是本文要探讨的内容。 先聊聊历史, 在很久很久以前,想要在线上服务器部署一个应用,首先需要购买一个物理服务器,在服务器安装一个操作系统,然后安装好应用所需要的各种依赖环境,最后才可以进行应用的部署,而且一台服务器只能部署一个应用。 示意图: 这就造成了以下几个明显问题: 部署应用非常慢 需要花费的成本非常高 而且容易造成资源的浪费,因为往往一个应用使用不了一个服务器的资源 难于迁移和扩展 迁移问题:要把应用进行迁移,又得重复部署应用的过程:买服务器 -> 安装os -> 配置环境 -> 部署应用 扩展问题:只能购买新的硬件来升级物理服务器,或者购买更高性能的服务器,这就又涉及到迁移问题了 可能会被限定硬件厂商,因为那时候有不同硬件平台 虚拟化技术出现以后, 对于这种问题有所改变,虚拟化技术会在本地操作系统之上加多一层 Hypervisor层,Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可以虚拟化硬件资源,例如cpu、硬盘、内存资源等。然后我们可以基于通过虚拟化出来的资源之上安装操作系统

华为云开源两款容器技术 Kubernetes的拐点时代到来

為{幸葍}努か 提交于 2019-11-25 22:59:51
云计算的拐点隐现。当然了,我们说的不是云计算厂商份额的增减,或者竞争格局的变化,而是在云计算下半场抑或云计算2.0时代,云原生或许能成为云计算行业变革的催化剂。 日前,全球云原生领域最大的峰会之一KubeCon+CloudNativeCon首次登陆中国。近年来,中国是北美之外对Kubernetes热情最高的地区,业界领先企业悉数到场。华为云BU PaaS产品部总经理廖振钦在大会主论坛发表了《进入垂直行业,Kubernetes帮助各产业加速向云原生迁移》的主题演讲,表示容器既需要在技术角度做演进,更要深入到行业中实践。 雷锋网获悉,据Gartner预测,到2020年,全球容器市场将超过20亿美金,容器逐步成为企业数字化转型标配,Kubernetes则是容器技术的核心。 华为云与容器 在容器领域,华为云打的也是全栈的招牌,提供基础设施、交付、运维、容器化架构转型的全流程服务,不过华为云与容器的联系不仅于此。 雷锋网了解到,华为很早就接触并在云原生领域做贡献。早在2015年,华为就加入Kubernetes社区并作为创始会员之一参与发起成立CNCF基金会;2016年,华为成为国内第一家发布基于Kubernetes的容器服务CCE;2017年华为成为第一批成为全球Kubernetes认证的服务提供商,并且CCE也首批通过了Kubernetes的一致性认证。截止目前,华为云在CNCF基金会

Docker基础

不打扰是莪最后的温柔 提交于 2019-11-25 22:19:10
Docker Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。**它是目前最流行的 Linux 容器解决方案。 而 Linux 容器是 Linux 发展出了另一种虚拟化技术,简单来讲, Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离,相当于是在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。 Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker ,就不用担心环境问题。 总体来说, Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。 Docker的三个基本概念 - Image(镜像) - Container(容器) - Repository(仓库) 镜像是 Docker 运行容器的前提,仓库是存放镜像的场所,可见镜像更是 Docker 的核心。 Image (镜像) 那么镜像到底是什么呢? Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)