Docker在云平台上的最佳实践:基于容器技术的DevOps探索

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 12月9日,在云栖计算之旅线下沙龙上,阿里云容器服务团队的高级研发工程师秦妤嘉分享了《基于容器技术的DevOps探索》。首先介绍了DevOps和CD,接着分析了Docker如何打破传统CD壁垒,最后讲解了怎样从零开始搭建一个持续交付系统。

12月9日,在云栖计算之旅线下沙龙上,阿里云容器服务团队的高级研发工程师秦妤嘉分享了《基于容器技术的DevOps探索》。首先介绍了DevOps和CD,接着分析了Docker如何打破传统CD壁垒,最后讲解了怎样从零开始搭建一个持续交付系统。

视频回顾

DevOps与Continuous Delivery

DevOps

在一个较成熟的软件和服务交付的团队里,就技术层面来说主要分为三个组成部分:开发、测试和运维。开发测试团队比较关注的是代码能否运行,而运维比较关注的是系统能否在上线后稳定运行,于是隔阂就产生了。DevOps的出现就是为了解决这一问题。DevOps的作用就是将这三个部分紧密的连接起来,提供一条从软件开发到质量保障到技术运营的自动化流水线,加强不同角色之间的沟通和协作,从而减少资源浪费、提高质量,并将产品快速推向市场,快速有效的把一个想法变成价值交付到客户手中。

CD

52825a478044c7a423c164b0478c5b4900e119f6

怎样实现DevOps?我们定义了CD(持续集成),CD是一个方法。CD有三个重要的点:自动化、持续和有效的反馈。图中从左到右是代码到交付的过程。

CD过程中可能遇到几个问题,概括有三方面:环境一致性问题,开发人员之间环境也会产生不一致;版本管理问题;快速响应(发布、回滚)问题。

那么,问题的根源是什么呢?是因为Developer交付的只有代码,以及代码的依赖,而keep site running需要除了代码之外的运行环境,以及运行环境之间的依赖。

 

Docker如何打破传统CD壁垒?

Docker是实现DevOps最合适的工具之一,甚至变革了软件交付方式,可以有效解决持续交付过程中遇到的问题。

阿里云容器服务

6fae0ee87a729880328cbce7e0eb36620ee16a31

阿里云容器服务在资源层面有集群、节点,在内容层面有Compose模板、镜像,在应用层面有应用、服务和容器。

完整的容器化持续交付流程

cd96d08a5b1cbfeb2dce38318cd95bda3222dba7

传统的开发过程开发者的代码里有逻辑、应用以及代码依赖包,而我们的代码中会更多的加入Docker File、Docker Compose,用来制作集装箱和搬运集装箱,代码提交成功后代码服务器会通知CI server,CI server会拉取代码进行代码打包,打包后进行单元测试,如果单元测试没有通过,有效的反馈就会马上告诉开发者。如果通过,认为应用包括有应用,我们会根据代码给予的Docker file制作镜像,server会有配置的使用权限,会把镜像推送到阿里云容器,代码可交付的东西已经产生。

部署阶段,如果进行集成测试或回归测试,走测试环境,部署时Compose模板就是用来描述如何部署的,通过Jenkins来丰富功能,通过各种插件将镜像拉取下来部署在应用环境上,从而实现代码提交变更到整个部署过程。

Jenkins2.0

d631a7e517b14834b1d73e28f6e1e418d5df1977

Jenkins 2.0版本中包含了一个新的管道(pipline)构建交付系统,管道的设计理念是基于Groovy DSL,实现一套灵活、可扩展的持续发布(CD)工作流,将原本独立运行于单个或多个节点的任务连接起来,实现复杂发布流程。并且,Jenkins支持从代码库直接读取脚本。

 

从零开始搭建一个持续交付系统

f3f940b57bc3064a38f0487e368d8c60babd4554

Stage是对整个持续交付流程的清晰定义,是由自己写出来,单元测试结果也可以完美的展示,每一个阶段的耗时等可以直接读取日志查看,也可以在本地存储软件打包的结果。

持续交付流程设计

f01c97f9f6e4b27387158c5c2ecd717537102ac6

通过插件实现动态生成slave,执行job最后销毁的过程,我们也支持共享存储OSS,上传war包,用镜像的方式存储要交付的东西,部署是由阿里云自主开发的插件,调用容器服务的API。

Jenkins Master and Agent

41ab37516eee5b352c6328cae4eb8575d55078b3

Docker in docker方式是指,Agent会用到Docker进行镜像打包,如果有十个项目在Jenkins上执行时,就会涉及到在所有项目中安装agent非常消耗资源,所以我们采用父子结构,通过透传的方式,可以使用宿主机上Docker的agent服务器执行镜像构建和打包,做到自动化流程内的隔离。

发布策略

容器服务现在支持两种发布方式:

一是rolling update,依次停止老容器,启动新容器,整个过程自动化,无需用户手动操作,适合测试场景,适合于多副本的应用发布;一是蓝绿发布(热部署):不会停止老容器,为新服务启动新容器,需要用户设置路由权重,实现不同版本应用的上线、下线,适合于版本的快速发布,不会停机影响用户。

未来还会支持金丝雀发布(灰度):不会停止老容器,为新服务启动新容器,需要用户设置路由权重,实现不同版本应用的共存,支持A/B测试,适合多方案选择。

 

 

关于云栖计算之旅

云栖技术之旅,是由阿里云云栖社区主办,整合了阿里集团内部多个领域顶级技术专家与技术资源,通过线下技术培训的方式,为热爱技术的朋友提供一个交流&分享技术观点、碰撞精彩火花的平台。

第1期精彩回顾:https://yq.aliyun.com/articles/62414

第3期预告(12月23日前端专场):https://yq.aliyun.com/promotion/140

 

关于阿里云容器服务

阿里云容器服务(Container Service)提供了高性能可伸缩的容器应用管理服务,支持在一组云服务器上通过Docker容器来进行应用生命周期管理。容器服务极大简化了用户对容器管理集群的搭建工作,无缝整合了阿里云虚拟化、存储、网络和安全能力,打造Docker云端最优化的运行环境。容器服务提供了多种应用发布方式和流水线般的持续交付能力,原生支持微服务架构,助力用户无缝上云和跨云管理。

阿里云容器服务:https://www.aliyun.com/product/containerservice

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
1
1
1
80638
分享
相关文章
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
31 16
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
93 30
揭秘 Microsoft.Docker.SDK:让容器开发更轻松的强大工具揭秘
随着云计算和容器技术的快速发展,`Docker` 已经成为容器化技术的事实标准。`Microsoft` 作为 `Docker` 的主要支持者和参与者,推出了 `Microsoft.Docker.SDK`,旨在帮助开发者更轻松地进行容器开发。本文将深入揭秘 Microsoft.Docker.SDK 的功能、使用方法以及它在容器开发中的应用。
45 12
自学软硬件第755 docker容器虚拟化技术youtube视频下载工具
docker容器虚拟化技术有什么用?怎么使用?TubeTube 项目使用youtube视频下载工具
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
课时5:阿里云容器服务:最原生的集成Docker和云服务
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
419 15
Docker技术背景与应用:解决现代开发中的关键问题
Docker作为一种革命性的容器化技术,极大地改变了现代软件开发的方式。通过解决环境一致性、依赖管理、部署复杂性和资源利用率等问题,Docker为开发者提供了高效、灵活的开发和部署环境。尽管面临着一些挑战,但随着技术的发展和完善,Docker将继续在现代软件开发中发挥重要作用。作为全栈工程师,掌握并善用Docker技术,将为我们的开发工作带来更多便利和可能性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
【云栖计算之旅】第2期精彩回顾:Docker在云平台上的最佳实践
12月9日下午,云栖计算之旅线下沙龙第2期《Docker在云平台上的最佳实践》专场在北京阿里中心望京A座举办,来自各大互联网公司的Docker开发者和运维人员齐聚,会场座无虚席,阿里云容器团队的3位Docker专家进行了分享。本文来回顾一下本次沙龙的精华内容。
3309 0
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
334 93