容器技术基础-Docker核心概念及架构

简介: 容器技术基础-Docker核心概念及架构

开发者学习笔记【阿里云云原生助理工程师认证(ACA)课程:容器技术基础-Docker核心概念及架构】

课程地址:https://edu.aliyun.com/course/3112075/lesson/19010


容器技术基础-Docker核心概念及架构

 

内容介绍:

一、Docker容器基础概念

二、解决问题


一、Docker容器基础概念

容器的一些基础概念首先docker的这个图是非常形象的logo,就是一堆集装箱放在鲸鱼上,作为鲸鱼的docker,就是一个标准化的艺术系统我们来看一下docker容器基础概念

image.png

Docker 容器是资源分割和调度的基本单位,封装整个服务的运行环境,用于构建、发布和运行分布式应用的一个框架,他是一个跨平台、可移植并且简单易用的容器解决方案。Docker 是世界领先的软件容器平台。Docker 使用Google公司推出的 Go 语言进行开发实现,基于 Linux 内核的 cgroup,namespace,对进程进行封装隔离。Docker 能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员,以便他们专注在真正重要的事情上:构建杰出的软件用户可以方便地创建和使用容器,把自己的应用放入容器。
容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

在容器技术之前是有很多技术的,那么为什么 docker 成了容器的事实标准?
首先,docker 的镜像提供了内和外完整的运行环境,确保了应用运行环境一致性,从而不会再出现开发到了测试环境就无法运行。Docker 技术的第二个特点就是可以做到秒级甚至毫秒级的快速,大大节约了开发测试工作时间。
第三个,它具备很好的资源隔离性,避免公用的服务器资源会容易受到其他的影响。
第四,具备这种弹性伸缩和快速扩散的善于处理使用压力的问题,可以很轻易的把在一个平台上运行的应用迁移到另一个平台上,不必担心运行环境的变化导致业务无法正常运行的情况,迁移是非常方便的,使用到可以通过定制应用镜像来实现持续集成,持续交付部署,通过持续的交互部署,就可以提升整个交互开发的效率正因这些docker的优势,docker已经成为了容器技术的一个事实的标准,容器有这么多的优势,并且已经成为基础的实施标准。

image.png

 

二、解决问题

那么 docker 容器到底能帮助我们解决什么样的问题呢?docker 官网给出了他的八大重点使用场景。如果借助这种 docker 技术的优势,在低开销情况下打造一致的运行环境,首先第一个重点的解决方案是简化配置,公司宣传的 docker 的主要使用场景群集的最大组是人,在你的硬件设施上运行各种配置不一样的平台,包括软件系统,都会在降低额外开销的情况下提供了同样的功能,才能让你将运行环境和配置放在代码中,然后部署同一个 docker 的配置,可以在不同的环境中使用,这样就降低了硬件要求和应用环境之间的耦合度。相对于虚拟化技术,docker 技术可以简化相应的配置,第二个最重要的解决方案场景就是代码流水线管理,前一个场景对于管理代码的流水线起了很大的帮助,代码从开发者的机器到最终生产环境的部署需要经过很多的中间环节,而每个中间环节都有自己微小的差别,docker 给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少。第三个就提升开发的效率,第四个重要职责场景是隔离,就因为docker 可以提供这种资源兼有效的隔离,它可以很好的提供一个隔离的环境,使得应用之间不受相互影响,可以在一台机器上运行多个应用,并且能够实现容器资源的更有效的整合使用,这就是隔离应用。第五个就是整合服务器,这种通过信息来整合多个应用,整个服务器就会降低成本,因为没有多个超系统的内存占用以及能在多个实例之间共享,没有使用的内存,Docker 可以比虚拟机提供更小的,更好的服务器整合解决方案。第六个就是 docker 提供了很多的工具,这些工具不一定是针对容器,但是却适用于容器,可以帮助调试 bug,第七个重要的环境,就是多租户环境可以在多租户应用中提供一个多方位的使用场景,它可以为每个租户的应用场景创建隔离的环境。方便不同用户可以在这种同一台机器上做,之间不受相应的影响,提供一个非常好的多租户的一个隔离环境。第八个也是包括重要的一个场景,快速部署,在虚拟机之前引入新的硬件资源需要消耗几天的时间,虚拟化技术将这个时间缩短到分钟级别,而 docker 通过经济常见的容器和无需启动的操作系统,再次将这个过程所达到了秒级。这正是的一个重要的场景特点

image.png

上面说的八个重点的使用场景,下面来了解一下 docker 的三大核心概念,通过容器镜像为标准化打包提供了一个基础容器,是从镜像创建的一个运行实例。容器就是镜像的运行时,docker 仓库是集中存放镜像文件仓库,这就是 docker 仓库来提供了镜像的一个存储方式。下面我们来详细的来介绍一下它的三大核心概念。

image.png

首先我们来看一下容器镜像,容器镜像是一个特殊的文件系统,除了提供所需的程序库资源配置文件等还包含了一些为运行时准备的配置参数,努力明确环境变量不包含任何动态的数据,其内容在构建之后也不会改变镜像作为 doctor 最为突出的特性,变革了软件交付的标准,要理解镜像的话对整个 docker 的生命周期也是非常重要的。镜像,作为最为突出的创新之一,变革的软件缴付的标准我不要理解,理解整个包括的生命周期也是非常重要的,包括镜像类似一个只读的压缩包,它是把相应的应用程序全部打包压

在这样一个镜像里面,docker的镜像可以用于快速的传建容器,我们只要采用的命令,就可以去创建一个容器镜像可以进行分层的构建及一个镜象。可以在多个中间层组成多个镜象,可以同享一个中间层,我们也是通过镜像来添加一层描述一个新的镜像本身就是按照一层一层的这种分成构建的模式去构建井下道个镜象包含了一些精简的操作系统,能够提供应用所取的一些必要的文件和依赖包。docker竞价构建避稳方法有两种,一般构建自己的倾象有两种方式,比如使用生成镜像,使用docker并命令是我们可以将修改过的容器重新提交成为一个新的镜像使用这种方式构建镜像。因为别人并不知道我们这东西做了哪些修改和操作,所以这个安全性会加生很大的影响,不太建议用docker这种方式来生成影像,一般的话,会推荐用这种方式来构建一个镜像,通过就可以很清晰的标记到镜像所依赖的环境和后续所需要的相应运行所需要依赖的包。后续的话,我我们也会简单的介绍如何来编写一个完整的

下面我们来看一下其实就是镜像传建的一个运行实例其实运行时,首先,不的容器和镜像会有哪些差别?镜像image和容器的关系,就像是面向对象设计中类和实例一样镜像是静态的定义容器是镜像运行时的实体东西,可以被创建启动,停止,删除。暂停容器的实质进程在于直接在数组执行的进程不同容器进程运行于属于自己独立的秘密空间容器存储成的生存周期和容器一样,容积越小的容器,存储层也随之小

任何保存与容器存储成的信息都会随动器删除丢失。我们按照docker最佳间时间容器不应该向其存储的一些论口手机器存储上要保持无状态。所有的文件解入操作都应该使用数据键或者绑定数,在这些位置的读写会跳过容器直接存储,其性能和稳定性更高。数据卷生成中追独立与东器小王数据却不会消亡。因此,使用数据容器可以随意删除,重新整理数据却不会丢失。

 image.png 

这个容器的第三个关键在于镜像仓库,docker 镜像仓库类似于代码仓库,它是ck集中存储镜像的一个文件参数,实现整个docker镜下的一个全局的存储。它提供一个标准的api对外返回的一个接口存储的镜像把它分为公开的窗口和形态,目前最大的公开窗口是官方提供的的其中,存放的数量庞大的镜像都不可以里云也提供这种仓库的本地资源,也提供了稳定的国内访问。
当然,如果用户不希望去公开分享这个镜像文件,也只是用户在本地网络内创建一个自己能够放的仓库但用户创建完自己的镜像之后,就可以使用这样的一个命令,将它上传到指定的公有仓库或者私有镜像仓库。在另一个基础上使用这个镜像是就可以从超户里面拉下来就可以简单的快速的使用,就是这个镜像下的命令。就是镜像推送的命令,还包括到社区就镜像查询的命名。

 image.png

我们了解了三大核心概念,我们来看一下整体的一个体系结构,使用客户端服务器cs架构这种远程api来管理和创建东西,容器通过到镜像来创建镜像。

仓储主要是分为三份,官方的镜像仓股是私有镜像场控搭建可以继续开源的项目,或者是阿里云提供的镜像仓库服务。Dr serve提供了一个的服务端,它是在数组机中运行的守无进程来接受docker客户端可来发送的命令来执行拉取镜像,缓存和启动容器这些操作。docker的客户端主要是负责通过命令对容器进行相应的操作,比如拉去镜像,构建镜像,运行容器等等。
在图中我们可以清晰的看到,我们使用一般都是在客户端向服务端发出相应的请求,包括容器的构建,容器的部署,容器的运行服务端,将这些容器引在不同的服务器和设备上。

 image.png

docker 技术性的一个关键特征,特别是官网上的这句话,“Build, Ship, and Run Any App, Anywhere”,翻译成中文就是随时随地的发布构建任何应用程序其实实翻译成中文就是随时随即的构建,发布和运行任何应用程序就是构建定下镜像就是把代码以及相应的文件以及所依赖的运行环境等打包成一个小节,然后进行存储就是运出镜下,那我们可以在数组集和仓库镜像中进行相应的运输

Run就是运行镜像,运行的形象就是一个器,容器就是运行程序的一个地方,通过可以是在不同的环境东西打包一个这样的镜像,快速的进行运行按照我们在不同环境中可以快速的去运行这些代码,而不需要考虑底层的依赖,并且我们可以在开发环境,测试环境与生产环境中可以保持程序运行的一致性,这个就是关键的一个特点,并去安装,就是随时随地的构建,发布和运行任何专用应用程序和代码。

 image.png

文本内容包含了一条条构建镜像所需要的指令和说明首先通过我们可以把代码和相应的文件打包形成一个镜像文件进行存储能在程序需要的时候,我们可以用乱的方式把它镜像拉取到本地来进行相应的运行是软件开发的一个技术,到镜像是软件的一个交付品到容器,可以认为是软件那个运行台到file是面向开发的到镜像,成为一个交互的标准容器的设计,部署,运维三者是缺一不可的来构成了整个基础。

我们简单来看一下的一些指令详节节首先,制定构建静下的一个基础镜像,必须是当中非注释函的第一个指令。这样的一个指令是在当前技术上执行这样一个命令,并提交为新的镜象语法但在中只能使用一次,如果有多个,这只有最后一个生效启动容器的时候执行,。在build时候执行的详细指令可以通过到官网进行询查询。

我们可以通过一些基础操作,按照操作试着编写自己的代码。

image.png

接下来看一些指令详解。

命令

指令说明

FROM

指定构建镜像的基础源镜像,FROM必须是Dockerfile 中非注释行的第一个指令指定创建镜像的用户

MAINTAINER

在当前镜像基础上执行指定命令,并提交为新的镜像

RUN

语法和RUN类似,但在Dockerfile 中只能使用一次,如果有多个,则只有最后一个会生效。CMD只在启动容器的时候执行,而RUN只在build的时候执行。

CMD

告诉Docker 服务端容器对外映射的本地端口

EXPOSE

指定一个环节变量

ENV

复制本地主机文件、目录或者远程文件到容器指定路径

ADD

用法同ADD,唯一的不同是不能指定远程文件URLS

COPY

配置容器启动后执行的命令,并且不可被Docker run 提供的参数覆盖,而CMD是可以被覆盖的。

ENTRYPOINT

创建一个可以从本地主机的挂载点

VOLUME

指定运行容器时的用户名或UID

USER

为后续的RUN、CMD、ENTRYPOINT指令配置工作目录

WORKDIR

指令说明

 

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
存储 缓存 安全
某鱼电商接口架构深度剖析:从稳定性到高性能的技术密码
某鱼电商接口架构揭秘:分层解耦、安全加固、性能优化三维设计,实现200ms内响应、故障率低于0.1%。详解三层架构、多引擎存储、异步发布、WebSocket通信与全链路防护,助力开发者突破电商接口“三难”困境。
|
3月前
|
数据采集 监控 JavaScript
移动端性能监控探索:鸿蒙 NEXT 探针架构与技术实现
阿里云 ARMS 团队倾力打造的鸿蒙 NEXT SDK,为鸿蒙应用提供了业界领先的全链路监控解决方案。这不仅仅是一个 SDK,更是您洞察用户体验、优化应用性能的智能伙伴。
630 32
|
2月前
|
人工智能 自然语言处理 安全
AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教系统融合大语言模型、教育知识图谱、多模态交互与智能体架构,实现精准学情诊断、个性化辅导与主动教学。支持图文语音输入,本地化部署保障隐私,重构“教、学、评、辅”全链路,推动因材施教落地,助力教育数字化转型。(238字)
|
2月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
504 5
|
2月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
237 6