容器这个词给人第一印象就是各种瓶瓶罐罐,特能“装”。是的,没错,我们说的容器技术是Linux Container翻译,Linux表示操作系统,Container是集装箱、容器、货柜的意思。

码头的集装箱是装运货物,它是一种按规格标准化的钢制箱子,集装箱特点在于其格式划一,并可以层层重叠。例如集装箱中的汽车通过邮轮运输送到目的地后,开箱即可以正常行驶。这就好比开发好的应用APP从CentOS7.6环境安装到Ubuntu14.04环境,在安装时候我的应用APP文件没有丢失,不需重新搭建这个系统需要的环境,就可以在Ubuntu14.04安装以后可以正常运行。

 2008年Linux Container容器技术的诞生就解决了IT世界里“集装箱运输”的问题,它是一种内核轻量级的操作系统层虚拟化技术,能隔离进程和资源。Linux Container主要由Namespace和Cgroup两大机制来保证实现,Namespace重点在“隔离”,是Linux内核用来隔离资源的方式,每个Namespace下的资源对于其他Namespace都是不透明,不可见的。

简单来说,容器和容器之间不相互影响,容器和宿主机之间不要相互影响。

Cgroups(Control Groups) 重点在“限制”。限制资源的使用,包括CPU、内存、磁盘的使用,体现出对资源的管理能力。

容器技术都有哪些特点?

传统的虚拟化技术,创建环境、部署应用、应用的移植性很繁琐,比如把vmware的虚拟机迁移到KVM里就很繁琐,需要做镜像格式的转换。有了容器技术以后,可以轻松实现实现各环境灵活迁移和部署,容器技术的特点主要有:

1.极其轻量:只打包了必要的Bin/Lib;

2.秒级部署:根据镜像的不同,容器的部署大概在毫秒与秒之间就可以完成,

3.易于移植:一次构建,随处部署,实现各环境灵活迁移,Docker镜像可在所有主流 Linux 发行版、Microsoft 平台灵活迁移,极大减轻了开发和部署工作量,提高开发效率。

4.安全隔离:容器会在操作系统级别虚拟化 CPU、内存、存储网络资源,为开发者提供在逻辑上与其他应用相隔离的沙盒化操作系统接口。

5.弹性伸缩:Kubernetes、Swam、Mesos这类开源、方便、好使的容器管理平台有着非常强大的弹性管理能力,同时减少资源的消耗冲突。

6.版本控制:每个容器的镜像都有版本控制,可以对历史版本进行追踪和差异比较。

 

容器的主要应用场景有哪些?

容器技术的诞生其实主要解决了PAAS的层的技术实现。像OpenStack、Cloudstack这样的技术是解决IAAS层的问题。容器时代的来临,容器技术主要应用在以下场景:

1.持续集成和持续部署 (CI/CD),

持续集成/持续部署(以下称为CI/CD)是现代软件开发实践中构建、测试和部署应用到生产环境的支柱。持续集成 (CI) 和持续部署 (CD),每次开发人员签入代码并顺利测试之后,IT 团队都能够集成新代码。作为开发运维方法的基础,CI/CD 创造了一种实时反馈回路机制,持续地传输小型迭代更改,从而加速更改,提高质量。

2.加速微服务应用架构进程,

应用架构正在从采用瀑布模型开发法的单体代码库转变为独立开发和部署的松耦合服务,容器可以独立于应用的其他服务组件,轻松地共享、部署、更新和瞬间扩展。

3.容器化传统应用,

容器不仅能提高现有应用的安全性和可移植性,还能节约成本

4.降本增效,优化资源使用率。

Docker 和容器有助于优化 IT 基础设施的利用率和成本,容器是一种轻量级的打包和隔离应用工作负载的方法,所以 Docker 允许在同一物理或虚拟服务器上毫不冲突地运行多项工作负载,还可以将IT资源进行整合,确保在适当的时间有效地使用适当的资源。

容器技术作为云原生发展基石,成为云计算领域的技术趋势,技术迭代更新很快并被广泛使用,从Docker到K8S、Rancher以及Podman,商业化和开源相结合,容器技术正在成为释放云价值的最短路径。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐