【云驻共创】华为云大咖带你玩转云原生基础设施之容器技术

举报
星恒 发表于 2022/04/27 10:20:55 2022/04/27
【摘要】 随着云原生技术的不断发展,云原生的发展已步入新的阶段。以容器、微服务以及动态编排为代表的云原生技术快速发展和成长,云原生技术已在金融、制造、互联网等多个行业得到广泛验证,支持的业务场景也愈加丰富,行业生态日渐繁荣。

一、容器是什么

  • 容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序以在几乎任何地方以相同的方式运行。
  • 开发人员在自己开发环境创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。
  • 如下图所示,容器就像左图中的集装箱一样,我们不需要去关心容器里的内容,它就是一种标准的运输方式

图片1.png

二、容器关键技术介绍

2.1容器与虚拟机

容器和虚拟机之间的主要区别在于虚拟化层的位置和操作系统资源的使用方式。

图片2.png

如左图所示,虚拟机主要是通过Hypervisor层来建立一个区别于主机操作系统之外的一个Guest OS,它可以根据需求装载一个完整的操作系统,而容器没有虚拟机的Hypervisor层,Hypervisor层的主要作用是用来隔离或管理物理机中的资源,比如CPUGPU、内存、硬盘等,这些由Hypervisor层进行分配,同时Guest OS在容器中也消失了,应用运行时直接调用Operating  System的共用内核来抵消容器没有Guest OS对应用运行的影响。容器和虚拟机相比,容器多了一个Docker,Docker是容器中的一个进程,它的作用就是辅助容器管理。

2.2容器规范

容器不光是Docker还有其他容器比如CoreOSrkt为了保证容器生态的健康发展,保证不同容器之间能够兼容,包含DockerCoreOSGoogle在内的若干公司共同成立了一个叫Open Container Initiative ( OCI 的组织,其目是制定开放的容器规范。容器的规范主要分为两方面:一个是容器打包规范,一个是容器运行规范,这也是Open Container Initiative ( OCI )的主要内容。

图片3.png

OCI容器规范主要包括两部分内容:一个是runtime spec,它的作用是保证容器的可移植性,保证容器在任何地方都可以进行运行,另一个是image format spec,它的作用是保证容器的可操作性。OCI容器规范主要是以Docker的规范来制定的。

2.3容器runtime

  • runtime与操作系统kernel紧密协作,为容器提供运行环境。
  • 常见的容器runtime有很多种,但是我们平常使用较多的是Docker :

1runCDocker公司2015年发布的容器runtime工具,符合OCI规范。runC是由Libcontainer演变而来。

2rkt ,CoreOS公司开发的Docker / runc的一个流行替代方案,符合OCI规范。

3Kata ,2017年整合Clear ContainerrunV项目,基于虚拟化技术的容器实现,符合OCI规范。

4gVisor ,2018Google公司发布gVisor的项目,基于虚拟化技术的容器实现,符合OCI规范。

2.4 Docker Engine

图片4.png

Docker Engine主要分为三层,分别是serverREST APIClientserver也叫docker daemon,它是长期运行的程序,大部分的容器开启或者存储都会用到server,它是容器中比较重要的部分,它的作用是创建和管理容器的对象,比如容器的镜像、容器本身、网络等;第二层REST API,它的作用是Clientserver的交互;第三层Client(也叫docker  CLI)它是用户进行直接交互的地方,用户会发起命令,然后Client通过REST APIserver进行交互。

2.5 Docker架构

图片5.png

如上图所示,主要有Clientdocker daemonRegistry三部分,docker daemon位于DOCKER_HOST主机上,Registry的意思是远程仓库。那么它们是如何工作的呢,例如Client里我们执行docker build生成一个镜像,我们通过docker daemon知道需要ubuntu的镜像来创建容器,我们首先会在自己的镜像仓库里寻找,如果仓库里有ubuntu的镜像,那么就可以直接以容器的方式开启,如果我们没有在自己的镜像仓库里找到这个镜像,我们就会通过网络在远程仓库里进行拉取,下载回主机当中,然后就可以开启容器。docker daemon在容器中是很重要的,它除了上面提及的下载镜像、开启容器功能之外还有存储和网络功能。

2.6  Docker 容器实现原理

Docker容器通过namespace技术实现进程隔离,通过cgroup技术实现容器进程可用资源的限制。Docker启动一个容器时,实际是创建了包含多个namespace参数的进程。

图片6.png

2.7容器镜像

  • 容器镜像是容器的模板,容器是镜像的运行实例,runtime根据容器镜像创建容器。
  • 容器镜像挂载在容器根目录下,为容器中的应用提供执行环境的文件系统。

容器镜像打包了整个操作系统的文件和目录(rootfs ),也包括应用本身。即应用及其运行所需的所有依赖都被封装在容器镜像中。

  • 容器镜像采用分层结构:

所有容器共享宿主机Kernel,并且不能修改宿主机Kernel。即容器运行过程中使用容器镜像中的文件,使用宿主机OS上的Kernel

图片7.png


2.8 Registry

  • Registry是存放容器镜像的仓库,用户可进行镜像下载和访问,分为公有和私有两类Registry
  • 公有镜像仓库:

Docker Hub Docker公司为公众提供的托管Registry

Quay . io现为Red Hat下的公共托管Registry

  • 私有镜像仓库:

企业可以用Docker  Registry构建私有的Registry

Registry本身是一个开源项目,可以用于搭建私有Registry

 

三、使用Dockerfile构建镜像

3.1如何构建镜像

Dockerfile是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

图片8.png

下图是一个简单的Dockerfile

图片9.png

3.2搭建私有Registry示例(1)

  • 使用registry”镜像构建本地镜像仓库。registrydocker hub上维护的镜像,其服务端口是5000- V参数将宿主机的/root / myregistry目录映射到容器的/var / lib / regisgtry目录,用于存放镜像数据。

    图片10.png

  • 使用dockertag命令修改镜像名称,使其符合registry上的格式要求。若要将镜像上传到registry ,镜像名称需要符合其命名格式要求:[ Registry - host ]:[ port ]/[ username ]/[ repository : tag]

    图片11.png

  • 上传容器镜像到私有Registry

    图片12.png

3.3搭建私有 Registry 示例(2)

Linux下,若使用如“192.168.137.99:1000”这样的内网地址作为私有仓库地址,则需要在/etc / docker / daemon . json 中写入如下内容(如果文件不存在需新建该文件),然后重启Docker服务。

图片13.png

四、容器生命周期管理

  • Docker run

以镜像开启容器,运行容器

  • Docker images

列出所有的镜像,提示镜像的名称、号码、版本等

  • Docker ps (- a )

展现整个容器

  • Docker stop Docker start

停止和开启容器

  • Docker pause

暂停容器

  • Docker unpause

重新开启容器

  • Docker rm

删除容器

  • Docker attach or Docker exec

进入容器

 

五、华为云云原生入门级开发者认证介绍

5.1华为云开发者认证

云是ICT产业的未来,也是企业数字化转型的底座,开发者是产业发展的灵魂,是业务创新的源头,是技术发展的引领者。为了更好地服务千万开发者,华为云推出开发者认证,真正让开发者在云上作业,懂开发会开发,与开发者共成长。

图片14.png

5.2华为云开发者认证框架

华为云开发者认证体系,贴合数字产业生态战略,在云原生、人工智能、大数据、物联网、区块链、移动开发、数据库等技术领域建立赋能体系及认证标准,与人社部、工信部颁布的新兴职业能力标准相匹配,提供清晰的开发者成长路径。

图片15.png

5.3华为云云原生入门级开发者认证内容

图片16.png

5.4华为云云原生入门级开发者认证知识图谱

图片17.png

  

本文整理自华为云社区【内容共创】活动第15期。

https://bbs.huaweicloud.com/blogs/345822

任务14华为云大咖带你玩转云原生基础设施之容器技术

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。