随着企业数字化进程的不断深入发展,云原生技术成为业界一个炙手可热的话题。所谓云原生,以容器、微服务、DevOps 等技术为基础,提供对应用进行分布式部署和统一管理的平台和体系。云原生是一系列思想和工具的集合。从其概念定义可看出,容器技术是云原生的基石。在云原生领域工作的开发人员,如果不了解和掌握容器技术,好比试图在浮沙堤上修建高楼大厦一般。

什么是容器

在介绍为什么我们需要容器之前,请大家先回忆一下自己的第一个 Hello World 程序的诞生史。在我们费尽千辛万苦,解决各种本地开发工具配置(编译器,环境变量等等)的问题之后,终于看到了 Hello World 的输出,那份喜悦之情不言而喻,但我们也绝不会忘记在遇到各种各样的环境配置问题时的沮丧和无助。

为什么从事云原生开发需要学习容器技术_应用程序

笔者在基于本地部署(On-Premises)的企业级管理软件领域工作十余年,遇到过一些同样版本的应用程序,在开发机和测试机上能够正常运行,部署到生产环境之后出现故障的棘手问题,最后经过排查,这些问题都是因为运行环境的差异所导致。

而容器技术作为一种轻量级、可移植和自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。采用容器技术,开发人员在自己本地开发环境创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行,从而能够彻底避免软件因为运行环境的差异而可能出现的各种运行问题。

初学者理解容器技术,可以从​​容器​​一词的字面含义入手。想象一下现实生活中的集装箱。我们要把一批货物从一个地方运输到另一个地方,只需要把货物按照标准规定打包放入集装箱内,集装箱与集装箱之间不会相互影响,集装箱也并不关心箱内到底装的是水果,衣物还是电子产品,所以这些货物的打包方式都遵循标准化规定。这些集装箱打包好之后,可以用通用的运输工具,比如汽车和货轮等进行运输。到了目的地之后,再用标准化的方式打开集装箱,取出里面的货物即可使用。

为什么从事云原生开发需要学习容器技术_运行环境_02