云原生技术分享 | Docker入门系列:初识容器技术

Posted 兴兵乐儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生技术分享 | Docker入门系列:初识容器技术相关的知识,希望对你有一定的参考价值。

云原生技术部落已经成立啦!后续将在部落专栏以系列短文的形式,向大家分享微服务、容器方面的技术与实战经验。

”Docker入门系列“系列将为大家带来容器与Docker相关的基础知识和使用技巧,涉及容器技术的基础知识、Docker常用操作、Docker的存储与网络、容器运行时与管理工具的探索等内容。由浅入深,带您轻松掌握容器技术,弄潮云原生。

赶紧来看看第一篇吧!


应用平台部 孙佳明/文


在讲技术之前,我们先来直观了解下容器这个词。容器是英文单词Container的直译,Container这个单词有集装箱、容器的意思。要形象的理解什么是容器技术,可以从集装箱上寻找答案。



早期航运是没有集装箱概念的,那时候货物的堆放杂乱无章,很影响出货和运输效率。集装箱的出现,因其标准化,并可以层层重叠,既能通过卡车货运,也可以直接通过吊车装卸并大量放置在特别设计的远洋轮船中,极大地提升了运输效率。

容器技术完美地吸收了集装箱概念的应用优点。一方面通过操作系统内核的资源隔离技术,实现了一种轻量级的虚拟化;另一方面将集装箱思想运用到了软件交付上,为应用程序提供了一个标准化运输系统。这套运输系统包括“集装箱”(容器镜像)、承载集装箱的“运载工具”(容器运行环境)、“运输系统调度人员”(容器管理工具)等。应用程序本身及其依赖可以打包成一个轻量级、可移植、自包含的容器镜像,容器镜像可移植到不同的容器运行环境上运行成容器实例。


云原生技术分享 | Docker入门系列(一):初识容器技术

容器技术的底层实现

云原生技术分享 | Docker入门系列(一):初识容器技术


容器技术主要是通过Linux内核中的Cgroup和Namespace两项技术实现轻量级虚拟化。

Cgroup全称Control Group。容器本质上是宿主机上的一个进程,Linux操作系统通过Cgroup可以设置进程使用CPU、内存和IO资源的限额。

Namespace则实现了进程之间资源的隔离,这项技术使得每个容器(进程)内看起来都有自己的文件系统、用户、进程等。拿网卡来说,即使宿主机上只有一块物理网卡,但每个容器都会认为自己有一块独立的网卡。


云原生技术分享 | Docker入门系列(一):初识容器技术

图:Linux使用的六种Namespace


容器正是对Cgroup和Namespace两项技术的封装,以实现的轻量级虚拟化。


云原生技术分享 | Docker入门系列(一):初识容器技术

容器技术的核心优势

云原生技术分享 | Docker入门系列(一):初识容器技术


云原生技术分享 | Docker入门系列(一):初识容器技术

轻量级虚拟化,小、快、强!


传统的虚拟化技术(如 VMWare, KVM, Xen),服务器上不仅需要安装Hypervisor环境,每个虚拟机还需要运行一个完整的操作系统,通常一个虚拟机镜像达到几个G,资源损耗较大。容器是一种轻量级虚拟化技术,容器是宿主机上的相互隔离的进程,每个容器共享宿主机的操作系统内核,一般容器镜像只有几百M。


云原生技术分享 | Docker入门系列(一):初识容器技术

图:虚拟化技术与容器技术对比


启动容器即相当于在操作系统上启动一个进程,不必再启动整个操作系统,所以容器的部署和启动速度比虚拟机快,资源利用率也大幅高于虚拟机。


云原生技术分享 | Docker入门系列(一):初识容器技术

环境一致,软件交付简单、高效


如今系统架构越来越复杂,由传统的单体应用,部署到有限的几台物理服务器上(Web Server/App Server/Database Server),到使用微服务架构,系统由成百上千个服务组成。一方面系统包含多种服务,这些服务有自己所依赖的库和软件包;另一方面又存在多种部署环境(研发、测试、生产),服务在交付过程中需要在不同的环境中迁移。开发人员在编写代码时需要考虑环境差异,运维人员则需要为不同的服务配置相应的环境。对双方来说,这都是一项复杂且繁琐的任务。

容器技术的使用,很好地解决上述问题:

对于开发人员 - Build Once, Run Anywhere:容器技术意味着环境隔离和可重复性。开发人员只需为应用创建一次运行环境,然后打包成容器镜像便可在其他环境上运行。

对于运维人员 - Configure Once, Run Anything:只需要配置好标准的容器运行环境,服务器就可以直接使用容器镜像运行应用实例。这使得运维人员的工作变得更高效,一致和可重复。


云原生技术分享 | Docker入门系列(一):初识容器技术


云原生技术分享 | Docker入门系列(一):初识容器技术

总结


● 容器是一种轻量级的虚拟化隔离技术,资源利用率高,具备轻、快、保证软件环境一致的特点。

● 容器镜像是开发与运维团队都认可且易于部署的交付件,降低了双方的协助成本,可大幅提升软件交付效率。


     今日话题

大家对容器技术有什么自己的理解呢?欢迎留言。祝大家假期愉快~


以上是关于云原生技术分享 | Docker入门系列:初识容器技术的主要内容,如果未能解决你的问题,请参考以下文章

『 云原生·Docker』Docker-compose 容器编排

容器:docker,k8s与云原生入门介绍

云原生技术分享 | 玩转OpenShift系列:不懂OpenShift,不足以谈容器云平台

探索云原生技术之基石-Docker容器入门篇

从零开始入门 K8s | 深入剖析 Linux 容器

云原生系列-目录