运行容器的12个阶段以及4个测试情景

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文讲的是运行容器的12个阶段以及4个测试情景【编者的话】本文介绍运行容器的12个阶段以及4个测试情景来帮助完美运行以及测试容器。
本文讲的是运行容器的12个阶段以及4个测试情景【编者的话】本文介绍运行容器的12个阶段以及4个测试情景来帮助完美运行以及测试容器。

这篇文章是对我们的网络研讨会(Codefresh周四,2017年2月9日)的一个简短总结。研讨会包括两个论题:“Docker内在/外在:由Daniel van Gils实现的现实中“真实”的在生产中应用的容器栈和Alexei Ledenev对于容器驱动开发的测试策略。如果你错过了会议, 点击这里 了解更多关于Docker在生产运行和检查的测试策略部署方面的技巧和窍门。

在生产中运行容器的12个阶段

前两个阶段是非常简单的。你已经知道开发你工作的项目所需要的方法。你听说了容器技术,然后你看看容器到底能做什么以及它看起来到底有多神奇!

接下来,在第三阶段,你开始想,“我怎么能在我目前的工作流程中运用到容器技术?“然后你进行一些调研来论证是否容器即使可行,在此你需要在生产上实践使用容器,积累实践知识和经验。

阶段四:拜见你的导师!你的导师是已经在生产中使用容器,比你更加了解容器,而且很乐意在容器的旅程中带你飞。

利用artichoke模型,可以看出你所在公司当中的每一个从容器受益的角色。每个人都需要理解容器的核心概念及其对组织的影响。这是转变管理的一部分。

阶段五:现在,你穿过阈值并开始真正投入到容器机器当中。试着在一个简单的项目当中应用容器,然后再其它更加复杂的项目上应用容器技术。这个过程中将会涉及大量的测试(Alexei的讲话中更多的介绍了关于容器的测试)。

黄金法则:确保容器先在本地测试通过,然后在移植到生产环境!全局思考,本地执行。

阶段六:你使用容器,并且遇到一些问题,然后犯一些错误。这同样是此过程的一部分。试着退一步,花时间去找到一个解决方案,你会发现并没有捷径。在这个阶段大多数开发人员意识到他们的Docker镜像包含太多的组件,然后其中有一半的组件是没有任何用处的。试着简洁化你的镜像。

记住: 屎一样的组件被打包进去,一定会产生屎一样的镜像。你不可能把屎一样的东西改进的不像屎。
yi.png

欢迎来到七个阶段。现在,你更了解你的镜像需要长什么样子。你需要保持轻量、安全、快速、稳定、设置!
  • 轻量:将你不需要的层移除掉。
  • 安全:确保你有最新的更新,记得要删除所有的秘密。
  • 快速:遵循最佳部署实践进行运行性能测试。
  • 稳定:对你的Docker镜像进行版本控制。
  • 设置:不变的;不要把数据库或复杂的卷放到你的容器。可以,但这项技术还太新。

阶段八。终于到了生产阶段!首先,让我们做一个真是的检测。每个人都真的使用微服务吗?答案是否定的。
  • 60%开发人员使用一个单独的比较重的容器。这是可以理解的,因为它是学习曲线的一部分。
  • 30%的开发者使用api方法,主要是在处理前端。
  • 7%的开发者将对容器进行架构。这里包括workers、API和后台进程等。
  • 3%的开发者是真正的在他们的项目中使用微服务。

阶段九。现在,你知道容器生态系统的所有部分以及你需要掌握哪些。这是你的容器初级形态:
er.png

阶段十:概念的验证。完成了。你知道如何实现容器,你需要一些空间去了解容器之外的服务和产品,并密切关注市场的新技术。

阶段十一。随着你不断的积累知识和经验,你形成了一个新的方式,也就是你明白在基础设施中你需要如何去适应你的容器。

阶段十二。你已经是一个容器圈的英雄。你以及加入你的旅程的人都了解到了容器的力量以及它如何应用到所有的项目和部门。

4个测试场景

Alexei 开始进行了容器架构组件的描述,列出了使用容器技术好处的清单,如可移植性、速度、配置、灵活性等等。

在我们介绍测试场景之前,我们介绍一下演示应用程序的组件和测试样例:
  • demo应用程序:所有的测试都是用Golang写的基于简单的Rest API服务器。
  • Postmen:Rest API测试工具以及Chrome浏览器扩展。
  • Newman:由Postman读取测试场景失败。
  • Node.js 应用

san.png

1. 修改现有的Pipeline

场景1号(又名天真方法)需要修改现有的管道。

从29:30开始网络研讨会上可以看到第一个场景演示。

输出结果:你会获得一个熟悉的CI流,可移植应用程序,以及较小的Docker镜像,但不会有便携式开发或测试环境。

这意味着它在CI之外是不可能复制相同的开发或测试环境。同样的程序必须为每台机器的重复。

2. 我们如何改善这种情况?

把所有的Cl流(编译和测试)移至容器中。

从33:38开始网络研讨会上可以看到第二个场景演示。

结果是,你将获得一个简单的CI流,可移植的应用程序和可移植的开发和测试环境。缺点是,Docker镜像变得更大、被污染而且存在一些不必要的依赖包。每次都必须重新构建镜像包的代码,或者测试更改的话你需要决定如何管理测试结果。

3. 把镜像拆分成两个

在这个测试场景中,你还有一个Dockerfile包含应用程序和测试代码,但是你需要提取出镜像层然后拆分成两个镜像。

从38:31观看网络研讨会第三个场景演示。

现在,应用程序具有可移植性以及便携式开发和测试环境,最后得到两个不同的镜像和一个Docker file,但代码或测试更改时你仍然需要重新构建整个Docker 镜像。同时,你需要一些shell“魔法”来创建一个清洁的应用镜像。

4. 创建Docker自动化流

你可以通过按照每一步来实现容器自动化,包括构建和测试。

从42:56观看网络研讨会第四个场景演示。

你会实现应用程序的可移植性,便携的开发和测试环境(这样你就可以在任何地方构建和测试),一个很小的应用镜像,以及实现快速构建。然而,你仍然需要一个工具来自动化和编排Docker建立流,如bash、ansible、dobi、 Habitus.oi 或Docker CI / CD服务像  Code Fresh 或者 Cloud66

原文链接: 12 Stages of Running Containers and 4 Testing Scenarios(翻译:边天亮 )

原文发布时间为:2017-05-18

本文作者:边天亮 

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:运行容器的12个阶段以及4个测试情景

相关文章
|
25天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
25天前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
32 5
|
25天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
53 4
|
2月前
|
Kubernetes 监控 Cloud Native
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
129 1
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
本文介绍了Python的unittest框架的基础用法,包括测试初始化(setup)、清除(tearDown)函数的使用,以及assertEqual和assertGreaterEqual等断言方法,并展示了如何创建测试用例,强调了测试函数需以test_开头才能被运行。
70 1
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
|
2月前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
58 4
|
2月前
|
安全 Docker 容器
Docker中运行容器时Operation not permitted报错问题解决
【10月更文挑战第2天】Docker中运行容器时Operation not permitted报错问题解决
673 3
|
2月前
|
网络协议 Ubuntu 前端开发
好好的容器突然起不来,经定位是容器内无法访问外网了?测试又说没改网络配置,该如何定位网络问题
本文记录了一次解决前端应用集成到主应用后出现502错误的问题。通过与测试人员的沟通,最终发现是DNS配置问题导致的。文章详细描述了问题的背景、沟通过程、解决方案,并总结了相关知识点和经验教训,帮助读者学习如何分析和定位网络问题。
123 0
|
2月前
|
应用服务中间件 Shell nginx
Docker容器运行
Docker容器运行
35 0