利用Jenkins生成maven项目镜像及容器

fengmian
导读:本文根据天云软件研发工程师12月28日在DockOne技术社区的分享整理而成,文章结尾处有社区问答具体内容。以下是分享详情: 一、Jenkins是什么? 目前持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程。并且能够帮助您的开发团队应对如下挑战: 软件构建自动化:配置完成后,CI系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建。 构建可持续的自动化检查:CI系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力。 构建可持续的自动化测试:构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Email,RSS等等)给相关的当事人。 生成后后续过程的自动化:当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包...
More

Openface在Kubernetes上的实践

人脸识别
 ■ 文/天云软件 研发工程师 陈雪锋 一、概述 本文介绍的是在Kubernetes中实现Openface的一个demo。Openface是一个基于dlib、OpenCV和深度卷积网络的开源应用。其源码和资料可以参考本文结尾处链接,在此不作赘述。 Openface进行人脸识别的过程如下图可以分为几个过程: 1. 鉴别人脸位置 检测人脸位置目前在各个相机、手机等照相应用中都有使用,会自动聚焦于人脸,Openface中使用的是dlib、OpenCV的人脸检测方法。 2. 提取特征向量,进行人脸“校准” 得到原始图像+人脸位置的输入,这一步就要检测人脸中的关键点,然后根据这些关键点对人脸做对齐校准。这些关键点包括眼睛大小位置、鼻子位置、嘴的位置等。然后提出这些特殊点进行校准,无论是在侧脸、低头或是仰视的角度,都能粗略地将眼睛和嘴巴集中到图片中的同一位置。 3. 深度卷积处理 这一步利用深度卷积网络将输入的人脸图像转成128*1的向量表示。这一步骤通常要重复几百万次,之后就可以为每一个人脸生成128个测量,对于同一个人的多张不同图片,它都能够给出基...
More

Kubernetes1.7两大新特性 | 直接通过containerd管理容器、自动伸缩条件

timg
 ■ 文/ 天云软件 产品总监 马俊  支持绕过docker,直接通过containerd管理容器 背景情况 从Docker1.11版本开始,Docker依赖于containerd和runC来管理容器,containerd是控制runC的后台程序,runC是Docker公司按照OCI标准规范编写的一个操作容器的命令行工具,containerd这个后台程序还可以操作满足OCI标准规范的其他容器工具,也就意味着以后只要是按照OCI标准规范开发的容器工具,都可以被containerd使用起来。使用containerd的好处是,当docker daemon或者containerd两个进程crash后,应用容器不会“死掉”,未来要是实现的功能是,当containerd daemon重新启动后可以同应用容器重新建立连接。 从Docker1.11版本开始,daemon模块调用关系图如下: 美国时间2016年12月14日,Docker公司宣布将containerd从Docker Engine中分离,并捐赠到一个新的开源社区独立发展和运营,阿里云,AWS, Google,IBM...
More

深入解读国内首个容器技术白皮书

640
■ 文/ 肖德时 2016年11月7日,中国开源云联盟发布国内首个容器白皮书《容器技术及其应用白皮书V1.0》,该白皮书由工业和信息化部信息化和软件服务业司指导,由中国开源云联盟WG11容器工作组编写。12月1日,中国开源云联盟WG11容器工作组向业界公布白皮书全文,天云软件参与编写。此文主要解读白皮书的由来。 WG11容器工作组的创立初衷和目标 中国开源云联盟(COSCL)是由工业和信息化部信息化和软件服务业司指导、挂靠在工信部电子工业标准化研究院(中国电子技术标准化研究院)下,旨在推动国内云计算团体标准发展和应用的产业联盟组织。 近年来,容器技术逐渐成为继虚拟化技术出现后对云计算领域具有深远影响的技术变革。容器技术的发展和应用,为各行业应用云计算提供了新思路,同时容器技术也对云计算的交付方式、效率、PaaS平台的构建等方面产生着深远的影响。容器技术可以帮助客户快速构建云原生应用,实现持续集成和交付,加快应用迭代周期。很多企业都已经在实际项目中使用该技术,容器已变为企业落地微服务架构改造及实现DevOps运维架构理念的重要支撑技术。 2016年6月中国开源云联盟WG11...
More

一种在Swarm集群中实现IP保持的方法

微信配图
■ 文/ 天云软件 系统架构师 李崇民 Docker在1.12版本中开始集成Swarmkit,本文研究在Swarmkit管理的集群中实现IP保持的方法。 Swarmkit简介 Swarmkit是Docker公司推出的Docker集群管理和容器编排工具,自Docker1.12版本,开始集成到Docker-engine里发布。Swarmkit是从Swarm项目发展而来。作为Docker自身的编排系统,可提供服务编排,集群管理和调度功能。 Swarmkit中节点分为两类 1. 工作节点 负责通过执行器运行任务。Swarmkit的默认执行器为Docker容器执行器(Docker Container Executor); 2. 管理节点 负责接收和响应用户的请求,将集群状态调节成最终状态。 图1 Swarm集群结构示意图 图1给出了Docker中Swarm集群的组织方式,集群中可包含多个manager节点,这些 manager选举一个节点作为leader节点。由leader节点负责整个集群的管理工作。如果该leader节点出现故障,剩余manager节点会重新选举...
More

牛继宾专访:如何看待基于OpenStack与Docker开源技术的云计算建设

cloudbuild
■ 文/ 科技说说 刘勇 OpenStack和Docker,这可能是近2年在云计算领域最火的两个开源技术词语了。做OpenStack的公司,都在为社区贡献代码的同时为企业用户做云;现在随着容器技术Docker的兴起,又涌现出不少研究Docker并不断尝试的创业公司,边尝试边在为用户做云。 那么,究竟什么是云,OpenStack即是云?还是Docker即是云?开源代码搭建私有云,安全及定制化如何保障和达到用户需求?前段时间随着OpenStack巴塞罗那会议又新出来一个“食客即是厨子”的讲法,那么,是宣告着做开源技术做云的“厨子”公司将会批量消失吗?而什么样的平台,才是能够满足用户需求、实现应用的迁移、真正安全可用高效的云平台? 带着一些疑问,笔者采访了北京天云融创软件技术有限公司(简称“天云软件”)的技术总监牛继宾。 Q1: 如何看待OpenStack、中国OpenStack众创业公司的现状、以及他们的贡献/价值、模式和问题? OpenStack作为云计算开源圈的明星,得到了众多传统厂商的支持,成为传统厂商转型云计算项目的稻草,同时由于其开源的特色,也成为了众多创业公司成就云计...
More

国内首个容器白皮书发布!

d520e68216b0a0c66a2f2decdb9e717f
近日,天云软件参与编撰的国内首个容器白皮书《容器技术及其应用白皮书1.0》由中国开源云联盟(COSCL)发布。我们的核心产品SkyForm ECP即是一个开放的、基于Docker容器的应用管理,旨在基于容器技术架构为用户轻松构建安全稳定、高可用的弹性云管理平台。基于长期的技术及经验积累,我们积极参与该白皮书的编撰,不仅有益于公司产品的优化演进,更使得容器技术及其应用在中国的发展及企业落地更加顺畅、为企业级用户的应用交付带来更多便利。 近年来,容器技术逐渐成为继虚拟化技术出现后对云计算领域具有深远影响的技术变革。容器技术的发展和应用,为各行业应用云计算提供了新思路,同时容器技术也对云计算的交付方式、效率、PaaS平台的构建等方面产生着深远的影响。容器技术可以帮助客户快速构建云原生应用,实现持续集成和交付,加快应用迭代周期。很多企业都已经在实际项目中使用该技术,容器已变为企业落地微服务架构改造及实现DevOps运维架构理念的重要支撑技术。 容器的技术生态主要分为核心容器技术、分布式容器技术、容器平台技术,以及容器原生辅助支持技术四部分。容器技术最早应用在Linux操作系统,称为Linu...
More

kubernetes如何使用Harbor作为私有镜像仓库

8.pic_hd
■ 文/ 天云软件 云平台研发工程师 葛林 一、概述 Harbor使用了基于角色的访问控制策略,当从Harbor中拉去镜像的时候,首先要进行身份认证,认证通过后才可以拉取镜像。在命令行模式下,需要先执行docker login,登陆成功后,才可以docker pull。通常情况下,在私有云环境中使用kubernetes时,我们要从docker registry拉取镜像的时候,都会给docker daemo配置--insecure-registry属性来告诉docker daemo我们所使用的docker registry是可信的,这样才能从私有的docker registry中拉取镜像。 但是如果要使用Harbor作为kubernetes的镜像仓库的话,这种方式就不适用了,下面让我们看看如何来使用Harbor作为kubernetes的镜像仓库。 二、实现探索 我们在命令行方式下,输入docker login登陆成功后,会在/root/.docker/ 目标下生成一个config.json文件。打开后可以看到如下的内容: 这里的内容就是docker dae...
More

9月24日企业级容器技术实践沙龙——刘春阳演讲实录

OLYMPUS DIGITAL CAMERA
(本文由现场速记并经刘春阳本人确认后整理而成) 大家好!我是来自于天云软件的刘春阳,我主要是负责我们公司容器化以及平台化产品的规划和设计。今天我主要跟大家分享一下在平台性的产品,特别是针对企业平台性的产品设计过程当中,可能会面临什么样的需求,面临什么样的问题。同时包括我们自己在面对这些问题时,采取的一些技术选型和思考。 我们先对这个标题做个语法断句。企业,应用容器化的,痛点、坑、和解决之道。开宗明义,我们是针对企业的。在企业这个背景下,构建平台性产品,就必须面对权利相关的东西,平台上多业务融合的东西。就像上一位讲师说的,在HOST模式情况下,怎么考虑端口的问题,就必须要考虑。下面我正式开始分享一下我们在这方面的思考。   这是我今天讲的内容,首先是技术背景和行业特性的介绍。基于这个背景,分析一下要做一款企业级的平台性产品的时候,需求来自于哪些方面,以及有一些什么样的原则。最后我们是我们的产品在设计过程当中的技术方面的选择和我们的思考。   第一个是技术背景。应该说这几年,云计算这个领域可以说是精彩纷呈,基本上每年都有1-2个技术的热点,云计算、大数据、容器。从去年开始容...
More

天云软件技术沙龙,带你近距离了解Docker等容器技术!

training
在数据爆炸的今天,企业对互联网应用的要求一方面是速度,要求可以快速迭代,适应市场需求变化;另一方面是稳定性,在面对用户量不断增长以及软件应用不断更新的情况下,可以依然保持业务持续不中断。这也是云计算发展的一个方向,用户可以不必自己部署、安装基层应用,因为可以直接交给云平台实现。而在这方面,Docker是一个尤其典型的应用!关于Docker等容器技术,你究竟了解多少?其使用场景都有哪些呢?9月24日,由DockOne社区和天云软件联合主办的容器技术沙龙在北京IC咖啡举办,由各位技术大咖带你近距离了解Docker! 作为一个标准的中间件,Docker相当于云计算的“集装箱”,承载着后端的各种技术,并且可以保障多个技术同时运行的速度。技术人员只需关注将自己开发好的代码、技术放在Docker镜像里面,而运维人员也只需关注让这种标准化的Docker在平台上运行起来即可。 首先,中国电信云计算公司研发工程师张其栋给大家带来“中国电信基于Mesos+Docker的运维自动化在CDN中的实践”的主题演讲。 张其栋首先表示,使用Mesos+Docker的大背景是中国电信云公司的CDN架构。之所...
More

应用容器化之Kubernetes实践

a6ca15267bef876948be8977edadfad8
■ 文/ 天云软件 研发工程师 陈晓宇 本次分享主要以ZooKeeper、Redis、Kafka、MongoDB等应用容器化在Kubernetes平台上面实践。从计算、网络、存储方面解析应用在集成中的问题,以及部分传统应用在容器化过程中设计的应用二次开发等问题。首先介绍应用Docker化的需求和局限、接着介绍基础平台,整体环境包括Kubernetes和ECP,然后介绍具体应用如ZooKeeper在集成中的实践,最后介绍部分开源应用在容器化过程中设计到的二次开发。 容器是一种轻量级的虚拟化技术,拥有持续集成、版本控制、可移植性、隔离性和安全性等优点,越来越多的应用跑在容器里面。但也有其缺陷,并不是所有场景都适合如高性能计算,已经满负荷运行的应用没有必要虚拟化,一些对IO等运行环境要求比较高应用不适合容器化如Oracle数据库。 容器给应用程序提供了一个独立的运行环境,并不是像虚拟机那样提供一套完整的操作系统,这是容器和虚拟机最大的区别,所以在用户在使用虚拟化如KVM、Vmware时候很少会担心到应用能不能跑到虚拟机里面,通常只是针对虚拟化环境做性能调优,如KVM的CPU绑定、内存气...
More

如何使用New Relic监控基于Docker的应用程序

0ad8b760ffee6b751b79ee7981f111df
■ 作者:Jarkko Laine ■ 译者:天云软件 刘宁 一、介绍 Docker是当前发展最快的新技术之一,它是一种部署软件和建立可伸缩网络服务架构的解决方案,Docker允许你按照特定的角色与用途将你的应用程序架构进行解耦并使用容器进行承载。通过使用Docker,你也可以在操作系统级别指定应用程序的依赖关系,让我们更接近JAVA最原始的承诺:“一次编写,随处运行”。 Docker的缺点是, 把代码封装到一组容器中可能会导致缺乏可见性:容器变成了黑盒子并使得开发人员对容器内部的工作方式几乎不可见。 为了解决这个问题,New Relic接手了此项任务并使得其服务器端的监控工具(服务器和APM)支持Docker。在2015年6月,所有的New Relic的用户均可通过New Relic实现对Docker的监控。 在宣布对Docker的支持以后,来自New Relic的Andrew Marshall写到:“现在,你可以从应用程序开始深入(这才是你最关心的),然后到个体的Docker容器,再到物理服务器,而不再有盲点”。 通过使用New Relic工具集监控基于Docke...
More

Docker应用的可视化监控管理

4b1fa8310c5a6aa52e6bb3e6431b918a
■ 文/ 天云软件 产品总监 马俊 本文介绍一个开源项目Weave Scope,项目地址是https://github.com/weaveworks/scope。Weave Scope这个项目会自动生成容器之间的关系图,方便理解容器之间的关系,也方便监控容器化和微服务化的应用。 首先,我们在一台机器上面安装docker,然后安装Weave Scope项目。 sudo wget -O /usr/local/bin/scope https://git.io/scope sudo chmod a+x /usr/local/bin/scope sudo scope launch 上面的脚本会从Docker Hub上面下载最新的Scope镜像,然后我们在web浏览器中输入http://ip:4040,我们就会看到下面所示页面。 在页面中可以按照进程视图、容器视图和主机视图进行呈现,并且可以进行查询。 如果选择的是容器视图,那么在左下角可以根据容器属性进行过滤,可以只显示系统容器,或者只显示应用容器,或者同时显示系统容器和应用容器,在左下角还可以根据容器状态进行过滤,可以只...
More

docker容器资源配额控制

fc76dda82a4d45b087f599a098fa99ca
■ 文/ 天云软件 容器技术团队 docker通过cgroup来控制容器使用的资源配额,包括CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制。 cgroup简介 cgroup是Control Groups的缩写,是Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如 cpu、memory、磁盘IO等等) 的机制,被LXC、docker等很多项目用于实现进程资源控制。cgroup将任意进程进行分组化管理的 Linux 内核功能。cgroup本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O 或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。这些具体的资源管理功能称为cgroup子系统,有以下几大子系统实现: blkio:设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及usb等等。 cpu:使用调度程序为cgroup任务提供cpu的访问。 cpuacct:产生cgroup任务的cpu资源报告。 cpuset:如果是多核心的cpu,这个子系统会为cgroup任务分配单独的cpu和内存。 dev...
More

从源码看Docker Registry v2中的Token认证实现机制

token00
■ 文/ 天云软件 容器技术团队 概述 Docker Registry v2在认证方面提供了基于Token的认证方式,允许用户使用自己的认证服务来进行认证,这就使得在企业内部利用现有的认证系统来实现对访问Docker Registry的用户进行认证成为可能。那么该如何使用企业内部已有的认证系统来实现Token认证,本文将从阅读源码的角度来对Token认证的实现过程进行说明。本次分析的Docker Registry版本号:v2.4.0。 认证流程 我们以在命令行中输入docker login https://reg.skycloud.com为例来看一下认证流程: docker client接受用户的输入命令,将命令转化为调用engine-api的RegistryLogin方法; 在api的RegistryLogin方法中通过http调用registry中的auth方法; 在auth方法中由于是v2版本的,所以会调用loginV2方法; 在loginv2方法中会进行调用/v2/接口,该接口会对请求进行认证。,此时的请求中并没有包含token信息,认证...
More

Docker 1.11 daemon模块新特性

docker logo
■ 文/ 天云软件 马俊 本次分析的Docker版本号:v1.11.0。 我们来看daemon模块,daemon模块核心的结构体是Daemon,同v1.10.0相比增加了containerd和defaultIsolation两个变量,删除了execDriver变量。 type Daemon struct {        ID                      string        repository                string        containers                container.Store        execCommands           *exec.Store        referenceStore            reference.Store        downloadManager           *xfer.LayerDownloadManager        uploadManager             *xfer.LayerUploadManager...
More

基于Docker的分布式服务研发实践

fc76dda82a4d45b087f599a098fa99ca
■ 文/ 天云软件 云平台研发工程师 葛林 葛林现主要负责SkyForm CMP、容器管理平台的设计与研发工作,对Docker、容器管理集群如:kubernetes、Swarm有一定的研究积累和经验。 Docker自从发布以来,短短3年的时间就迅速成长为各家争先追捧的宠儿,各家企业都希望能够借助Docker来提升自己的产品、优化现有的研发流程。本文分享Docker在天云软件分布式服务研发过程中的应用与实践,主要介绍使用Docker、Compose构建分布式服务的CI/CD体系;容器技术的引入为天云软件的SkyForm CMP带来了哪些变化;围绕着CI/CD,如何使天云软件在日常研发活动中变得更加敏捷、高效。 Skyform CMP简介 SkyForm CMP是一款中立、包容的能够对多种异构资源实现统一管理的云系统软件。SkyForm CMP能够为用户提供简单、统一的管理平台,内置丰富的资源管理与交付功能,可以对原本静态的IT基础设施进行管理、调度和按需分配。 SkyForm CMP的核心子服务是由SkyForm Cloud Service Gateway、SkyForm ...
More

天云软件正式推出PaaS平台整体解决方案

paas00
■ 文/ 天云软件 技术总监 牛继宾 牛继宾现主要负责公司云计算平台(IaaS、PaaS)项目技术方案和解决方案;在加入天云软件之前,曾任职于IBM系统科技部、VMware研发中心。 今天下午,亚信数据橘云产品发布会在清华文津国际酒店四层多功能厅举办。天云软件作为亚信的重要战略合作伙伴应邀出席,公司技术总监牛继宾带来了题为《天云软件PaaS云平台建设方案》的主题演讲,标志着公司倾力打造的PaaS平台整体解决方案正式推出。该方案可与包括亚信大数据Hadoop平台在内的众多大数据平台深度集成,从而为客户提供完整的PaaS平台能力。 传统云计算带来的挑战 高可用问题:传统IOE架构的问题在于设备成本高、scale out能力不足。在私有云IaaS平台实施以后,IOE硬件逐步替换为x86设备,IOE软件逐步替换为分布式体系,且伴随着开源组件越来越多的引入。某种程度上来说,x86设备越多、分布式系统复杂性越高、开源组件引入的越多,对高可用性的挑战越多,而IaaS一定程度解决了x86集中管理与资源提供的问题,但不能解决分布式系统、开源组件统筹管理这类问题。 敏捷开发问题:...
More

云管理平台(CMP)的概念与理解、发展趋势

配图-cmp@niujb00
■ 牛继宾  天云软件技术总监 在今天这个云计算的时代,基于云计算理念、构建在计算、存储、网络等基础资源之上的云平台逐步大行其道;而随着多种云平台技术路线的发展,多个云平台开始出现在企业IT市场,需要一种统一的构建在云平台之上的管理平台进行统一管控,而且在大型企业内部,异构复杂的基础架构带来的统一管理需求也在进一步发展,因此云管理平台以前所未有的速度成功深入到企业级云市场。 根据不同的企业需求,特别是IT规模与应用支撑的不同,云管理平台与云平台的特点和应用方式不同,所以企业在选择的时候也需要格外谨慎。今天,我们就针对云管理平台和云平台进行深入的分析,为您提供一个更适合的计算服务选型参考。 透析云平台 云计算平台也称为云平台,是指可以提供IaaS、PaaS、SaaS等各种云服务的平台。云计算平台可以划分为3类:以数据存储服务为主的存储型云平台,以计算能力提供为主的计算型云平台以及计算和数据存储处理兼顾的综合云计算平台(其中,同一资源池集成主机与存储,辅以网络连接的架构称为超融合架构)。云平台还可以分为开源类云平台与商业类云平台。 比较经典的开源类云平台,分别介绍如下: ...
More

docker容器网络通信原理分析

docker logo
■ 文/ 天云软件 云平台开发工程师 冯建建 冯建建现主要负责天云软件SkyForm CMP的设计和开发工作,熟悉CloudStack,OpenStack等开源云平台软件,同时对docker有一定研究积累和经验。 概述 自从docker容器出现以来,容器的网络通信就一直是大家关注的焦点,也是生产环境的迫切需求。而容器的网络通信又可以分为两大方面:单主机容器上的相互通信和跨主机的容器相互通信。而本文将分别针对这两方面,对容器的通信原理进行简单的分析,帮助大家更好地使用docker。 docker单主机容器通信 基于对net namespace的控制,docker可以为在容器创建隔离的网络环境,在隔离的网络环境下,容器具有完全独立的网络栈,与宿主机隔离,也可以使容器共享主机或者其他容器的网络命名空间,基本可以满足开发者在各种场景下的需要。按docker官方的说法,docker容器的网络有五种模式: bridge:docker默认的网络模式,为容器创建独立的网络命名空间,容器具有独立的网卡等所有单独的网络栈,是最常用的使用方式。 host:直接使用容器宿...
More

1000+节点:kubernetes 1.2性能和可扩展性更新介绍

20151120100232_969
■ 作者:Wojciech Tyczynski,软件工程师,Google ■ 译者:天云软件 容器团队 我们自豪地宣布的,kubernetes 1.2 版本现在可以支持1000+节点的群集,同时99%的API减少了 80%的访问延迟。这意味着仅仅六个月,在不影响用户体验的情况下,我们提升了10倍的性能——99%的 pod 启动时间小于 3 秒,并且99%的 API操作延迟仅有几十毫秒(在超大集群中,LIST操作是个例外,大概需要花费几百毫秒)。 言语苍白,眼见为证,请看视频(译者注:需要翻墙,你懂的~):https://youtu.be/9C6YeyyUUmI 在上面的视频中,你看到在1000个节点规模的群集上,集群访问逐步增加到100K次查询(QPS),包括rolling update请求在内,而没有宕机、没有任何延迟。这种情况已经足以应付互联网排名前100位网站的访问量了。 在这篇博客,我们会介绍达到这样的成果我们所做的工作,并且讨论我们未来支持更大规模集群的计划。 测试方法 我们针对如下的服务等级目标来对kubernetes的可扩展性进行基准测试: ...
More