这是一项颠覆性技术 - 容器

简介: 这是一项颠覆性技术 - 容器

我从14年开始关注容器技术,15年开始使用容器技术,这些年看到了容器技术爆发式发展、版本的快速迭代,记得当时Docker版本还是0.7,Kubernetes版本是1.0,到现在Docker CE 18,Kubernetes 11。

一门新技术的产生必定是为解决某些问题而存在的,同样也会带来一定的问题,容器技术是一项颠覆性技术,改变了企业的CI/CD(持续集成/持续交付,部署)环节的方式,开启了一场革命,我们一起看看这场革命怎么实行的!

Docker是什么?

2013年初,Docker横空出世,一个怀揣着改变应用程序部署的革命技术,目前看来,显然它做到了!

Docker是一个开源的应用容器引擎,对应用进程进行封装隔离,并且独立于宿主机与其他进程。Docker理念是将应用及依赖包打包到一个可移植的镜像中,可以运行到任意Docker引擎上。具有快速部署、可移植性、环境隔离等特点。

Kubernetes是什么?

Kubernetes(K8S)是Google开源的容器集群管理系统,其设计源于Google在容器编排方面积累的丰富经验,并结合社区创新的最佳实践。

K8S在Docker容器技术的基础之上,大大地提高了容器化部署应用简单高效。并且具备了完整的集群管理能力,例如服务发现、资源配额、缩容扩容、动态更新、持久化存储、监控、日志等,涵盖项目周期的各个环节。

经过这几年的快速发展,K8S已经成为建设容器云平台的首选方案。

Docker与Kubernetes有什么联系?

说到这里,就涉及到容器云平台核心组成了。

Docker是一个容器引擎,用于运行容器,Kubernetes是一个容器编排系统,不具备容器引擎功能,相比Docker是一个更高级封装,而他们在一起堪称珠联璧合,一起搞大事!如图:

image.png

聊聊日常运维中的工作痛点

1. 多开发语言,多运行环境

公司发展迅速,业务量蹭蹭的往上涨,同时也会开展其他业务线,打造自己的生态圈。多业务线维护给运维也带来一定挑战,例如多项目、多开发语言,例如开发语言有Java、Go、Python、还有PHP,这就意味着运行环境可能非常复杂,还要要维护多个版本,写N个脚本、长期积累还会导致环境臃肿、杂乱、故障率高、不易维护等问题,当迁移业务时,这个不敢动,哪个不敢动!

image.png

A:根据不同环境构建不同的镜像,例如:

  • 基础镜像:基本的运行环境,例如Java、PHP
  • 项目镜像:包含项目,可直接部署
    镜像在镜像仓库中管理及维护,通过版本管理应用环境镜像。

2. 环境不一致引发的争议

开发人员通常在Mac、Windows系统上开发项目,功能上线,合并代码到版本仓库,随后通知测试部门测试,测试通过后发布到生产环境,目前大多数互联网公司都是这种流程。

那么问题来了,项目可能在测试环境或生产环境就运行不起来…,为什么呢?操作系统、软件版本、少依赖包、配置忘记修改了等等?从而出现这些神秘的Bug,神秘的配置。有同学可能说:写一个参考文档。通常还会有遗漏,而且这依赖于文档编写能力和理解能力。

A:容器消除了线上线下的环境差异,保证了应用生命周期的环境一致性和标准化。开发人员使用镜像实现标准开发环境的构建,开发完成后封装项目及依赖环境,测试和运维人员可以直接用这个镜像在任何Docker Engine创建容器进行测试和发布,大大简化了持续集成、测试和发布的过程。Docker的可移植性,保持运行状态一致性,可想而知,是否更容易解决问题呢?

3. 微服务架构带来的问题

微服务架构是当下最流行的一种业务架构开发模式,目的是让臃肿的业务系统拆分成多个微服务,一个微服务完成某个特定的功能,如电商的购物车、支付、用户后台、消息等等。每一个微服务都是微型六角形应用,都有自己的业务逻辑和适配器,微服务部署在多台服务器上,每次项目升级都要java -jar启动服务,维护几十台这样的服务器,简直苦不堪言,感觉要吐血了。

A:

微服务特点:组件化、松耦合、去中心、灵活独立。

容器特点:沙箱机制、隔离性、可移植性、快速部署。

是不是恰到好处呢?容器的特点在微服务下能更好发挥优势,是部署的理想选择。

4. 项目上线周期长

马上就618、双11了,到时业务访问量会很大,得扩容服务器了。

新项目/扩容大致流程:申请资源 -> 资源审批 -> 虚拟机创建 -> 环境部署 -> 代码测试 -> 上线。

多部门协作,这个流程起码得一周吧!流程化提高一定生产力也可能带来一定局限:增加事项落实时间;那如何才能做到业务快速扩展并发能力和缩短上线周期呢?难道这个流程真的不能再优化了嘛?

A:说到弹性伸缩,在云计算领域数AWS做的好了 - AWS Auto Scaling。AWS Auto Scaling 可以监控您的应用程序并自动调整容量,以便以尽可能低的成本来保持稳定、可预测的性能。使用 AWS Auto Scaling,您可以在几分钟内为多项服务中的多个资源轻松设置应用程序扩展,例如EC2(云主机)。

当使用容器技术后,这种弹性伸缩的单元就是物理机/云主机之上的容器了。由于Docker容器快速启动的特性,可以在秒级部署几十个、上百个容器来提供服务,成倍提高并发能力,缩短上线周期。当业务高峰期下去了,动态销毁一部分容器,释放资源,让业务低成本稳定运行。

上述问题你有遇到过吗?在容器技术未出现之前可能很难解决这些问题,但容器技术的出现针对这些痛点交出一份满意的答卷,能帮助企业IT基础架构解决或者改善现状!

如何高效学习Docker/Kubernetes?

学习容器技术最大障碍不是网上资源太少,而是网上资源太多。大多数缺章少节的,很难按照教程跑通,并且Kubernetes具备丰富的功能,相对比较复杂,学习成本自然是有的;再说了,很简单的技术在网上随便找资料就能学会,也就没什么价值了。因此,决定写DockerKubernetes技术文章专栏,目的是让学习Kubernetes的朋友少走些弯路,在企业落地容器云平台提供一些企业实践性指导,希望自己所学所思的东西能够帮助到大家,能够有所启发。

此专栏以最佳实践为讲解导向,确保实用性、实战性。

image.png

专栏地址: 基于Kubernetes企业容器云平台落地与实践

若你在容器运维中,遇到Kubernetes方面的问题,请给我留言。同样,若发现有任何纰漏,还请随时指正,相互学习,共同进步!

记得点进去看看哦。

总结

  1. 首先,我们要明确企业上容器云的目的,容器是为业务服务的,任何技术都是为了更好的服务业务,这是我们的出发点。其次,看看业务特点是不是适合容器化,业务是不是具有版本迭代快、访问波动大、业务量增长快等特点。
  2. 容器平台目的是能为应用带来部署灵活、弹性伸缩、节省资源等优势。这些要求最好具备微服务架构、无状态化等特点,这些优势能更好的发挥。但不适合容器化的应用也不能勉强,否则建设后,不能带来预期的价值,不仅浪费了大量企业投入,还使得容器平台的价值得不到认可,这都不愿意看到的结果。
  3. 企业是一个大团队,要想体现个人价值,管好自己的一亩三分地是不行的,我们需要从一个全局角度看事情,发现其中的痛点去解决它;并且大家要建立一个统一的目标,共同围绕这个方向使劲,向自己的客户或用户交付最大化价值及最高质量的成果;团队以项目为导向,而不是职责!
    这种文化也是DevOps所倡导的,频发的交付带来更迅速的反馈,更高效的CI/CD流程可间接带来效益。
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
3月前
|
存储 容器
46.[HarmonyOS NEXT RelativeContainer案例三] 打造自适应容器:内容驱动的智能尺寸调整技术
在HarmonyOS NEXT的UI开发中,创建能够根据内容自动调整尺寸的容器是实现灵活布局的关键。RelativeContainer结合自适应尺寸设置,可以实现内容驱动的智能尺寸调整,使UI更加灵活且易于维护。本教程将详细讲解如何创建自适应尺寸的RelativeContainer,帮助你掌握这一实用技术。
103 5
|
1月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
1月前
|
运维 测试技术 Docker
Docker:轻量级容器化技术革命
Docker:轻量级容器化技术革命
|
9月前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
5月前
|
弹性计算 Java Maven
从代码到容器:Cloud Native Buildpacks技术解析
Cloud Native Buildpacks(CNB)是一种标准化、云原生的容器镜像构建系统,旨在消除手动编写Dockerfile,提供可重复、安全且高效的构建流程。它通过分层策略生成符合OCI标准的镜像,实现应用与基础镜像解耦,并自动化依赖管理和更新。阿里云应用管理支持通过CNB技术一键部署应用至ECS,简化构建和运行流程。
|
6月前
|
存储 虚拟化 Docker
|
6月前
|
开发工具 虚拟化 git
自学软硬件第755 docker容器虚拟化技术youtube视频下载工具
docker容器虚拟化技术有什么用?怎么使用?TubeTube 项目使用youtube视频下载工具
|
9月前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
243 5
|
9月前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
289 3
|
9月前
|
人工智能 Kubernetes Cloud Native
荣获2024年AI Cloud Native典型案例,阿里云容器产品技术能力获认可
2024全球数字经济大会云·AI·计算创新发展大会,阿里云容器服务团队携手客户,荣获“2024年AI Cloud Native典型案例”。