容器技术与应用(第2版)(微课版) 课件 任务3.1 认识Dker容器_第1页
容器技术与应用(第2版)(微课版) 课件 任务3.1 认识Dker容器_第2页
容器技术与应用(第2版)(微课版) 课件 任务3.1 认识Dker容器_第3页
容器技术与应用(第2版)(微课版) 课件 任务3.1 认识Dker容器_第4页
容器技术与应用(第2版)(微课版) 课件 任务3.1 认识Dker容器_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Docker容器技术与应用湖北轻工职业技术学院Docker容器管理项目3项目背景在当今数字化时代,软件开发与部署面临诸多挑战。传统应用部署方式繁琐,环境配置复杂且易出现兼容性问题,导致开发、测试和运维效率低下。随着业务规模的快速扩张,对应用的快速迭代和灵活部署提出了更高要求。“Docker容器管理”旨在解决这些痛点,提升整体开发运维效能。Docker容器管理项目3

容器是Docker的另一个核心概念。对比镜像而言,镜像是静态的只读文件,容器是镜像的一个运行实例,容器带有运行时需要的可写文件层。本项目主要介绍围绕容器这一核心概念的具体操作,包括创建容器、启动容器、终止容器、进入容器内执行操作、删除容器和通过导入/导出容器来实现容器迁移等。项目三:Docker容器管理目录任务3.1、认识Docker容器任务3.2、Docker容器资源控制创建定制的Docker镜像回顾1、dockercommit命令构建镜像的方法。2、利用Dockerfile文件构建镜像的方法。知识目标了解容器的基本概念、特点和实现原理。了解镜像和容器的关系。能力目标掌握容器的基本操作。掌握容器的运维管理。素质目标培养精益求精的工匠精神。树立诚实守信的职业素养。快速的交付和部署是Docker的优势之一,Docker容器涉及部署和运维。工程师小王决定编写Docker容器基础操作手册,其中包含Docker容器的基本介绍和容器的基本操作命令。任务3.1认识Docker技术任务要求3.1Docker容器

Docker作为一个开源的应用容器引擎,让开发者可以打包其应用及依赖包到一个可移植的容器中,并发布到任何流行的Linux机器中,实现容器化。

容器是一个相对独立的运行环境,这一点类似于虚拟机,但是它不像虚拟机那样彻底。容器通过将软件与周围环境隔离开来,将外界的影响降为最小,如不能在容器内把宿主机上的资源全部消耗掉。任务3.1认识Docker技术相关知识3.1Docker容器Docker容器具有以下特点。

(1)轻量级:在一台机器上运行的Docker容器共享宿主机的操作系统内核,只需占用较少的资源。

(2)标准:Docker容器基于开放标准,适用于基于Linux和Windows的应用,在任何环境中都能够始终如一地运行。

(3)安全:Docker容器将应用程序彼此隔离并从底层基础架构中分离出来。Docker提供了最强大的默认隔离功能,可以将应用程序问题限制在一个容器中,而不是限制在整个机器上。任务3.1认识Docker技术相关知识3.1容器实现原理

(1)通过namespace对不同的容器实现了隔离,namespace允许一个进程及其子进程从共享的宿主机内核资源(挂载点、进程列表等)中获得一个仅自己可见的隔离区域,让同一个namespace下的所有进程感知彼此变化,对外界进程一无所知,仿佛运行在一个独占的操作系统中一样。

(2)通过ControlGroups(CGroups)隔离宿主机上的物理资源,如CPU、内存、磁盘I/O和网络带宽。使用CGroups还可以为资源设置权重、计算使用量、操控任务(进程或线程)启停等。

(3)使用镜像管理功能,利用Docker的镜像分层、写时复制、内容寻址、联合挂载技术实现了一套完整的容器文件系统及运行环境,结合镜像仓库,镜像可以快速下载和共享,以便在多环境中部署。任务3.1认识Docker技术相关知识3.1Docker镜像与容器的关系Docker镜像是Docker容器运行的基础。可以理解为镜像是静态的定义,容器是镜像运行的实例,镜像和容器的关系就像面向对象程序设计中的类和实例一样。有了镜像才能启动容器,容器可以被创建、启动、终止、删除、暂停等。容器在启动前,Docker需要本地存在对应的镜像,如果本地不存在对应的镜像,则Docker会进行镜像仓库下载(默认镜像仓库是DockerHub)。任务3.1认识Docker技术相关知识3.1Docker镜像与容器的关系

每一个镜像都会有一个文本文件Dockerfile,其定义了如何构建Docker镜像。由于Docker镜像是分层管理的,因此Docker镜像的定制实际上就是定制每一层所添加的配置、文件。一个新镜像是由基础镜像一层一层叠加生成的,每安装一个软件就等于在现有的镜像上增加一层。

当容器启动时,一个新的可写层加载到镜像的顶部,这一层成为容器层,容器层之下都为镜像层。只有容器层是可写的,容器层下面的所有镜像层都是只读的。对容器的任何改动都只会发生在容器层中。如果Docker容器需要改动底层Docker镜像中的文件,则会启动Copy-on-Write机制,即先将此文件从镜像层中复制到最上层的可写层中,再对可写层中的副本进行操作。因此,容器层保存的是镜像变化的部分,不会对镜像本身进行任何修改,所以镜像可以被多个容器共享。Docker的默认存储目录在/var/lib/docker。任务3.1认识Docker技术相关知识3.1任务3.1认识Docker技术相关知识3.1Docker对容器内文件的操作可以归纳如下。

(1)添加文件:在容器中创建文件时,新文件被添加到容器层中。

(2)读取文件:当在容器中读取某个文件时,Docker会从上向下依次在各镜像层中查找此文件,一旦找到就打开此文件并读入内存。

(3)修改文件:在容器中修改已存在的文件时,Docker会从上向下依次在各个镜像层中查找此文件,一旦找到就立即将其复制到容器层中,再进行修改。

(4)删除文件:在容器中删除文件时,Docker会从上向下依次在镜像层中查找,找到此文件后,会在容器层记录此删除操作。任务3.1认识Docker技术相关知识3.1使用容器的操作命令docker

客户端非常简单

,我们可以直接输入

docker

--help命令来查看到Docker客户端的所有命令选项。任务3.1认识Docker技术相关知识3.1使用容器的操作命令(1)创建容器。dockercreate命令用于新建一个容器,其命令格式如下。dockercreate[OPTIONS]IMAGE[COMMAND][ARG...]OPTIONS选项的说明如下。①-d:后台运行容器,并返回容器ID。②-i:以交互模式运行容器,通常与-t同时使用。③-t:为容器重新分配一个伪输入终端,通常与-i同时使用。④--name="containername":为容器指定一个容器名。⑤--dns:指定容器使用的DNS服务器,默认和本地宿主机一致。任务3.1认识Docker技术相关知识3.1⑥-h"hostname":指定容器的hostname。⑦-eusername="ritchie":设置环境变量。⑧--cpuset="0-2"or--cpuset="0,1,2":绑定容器到指定CPU中运行。⑨-m:设置容器使用内存的最大值。⑩--net="bridge":指定容器的网络连接类型。11

--link=[]:添加链接到另一个容器。12--expose=[]:开放一个端口或一组端口。注意:dockercreate命令只是创建容器,如果需要启动容器,则使用使用启动容器的命令。任务3.1认识Docker技术相关知识3.1使用容器的操作命令(1)创建容器。例如:使用Docker镜像centos:latest创建容器,并将容器命名为centos7的代码如下。[root@localhost~]#dockercreate-it--namecentos7centos:latest任务3.1认识Docker技术相关知识3.1(2)列出容器。dockerps命令用于列出本地宿主机上的容器,其命令格式如下。dockerps[OPTIONS]OPTIONS选项的说明如下。①-a:列表显示本地宿主机上的所有容器,包括未运行的容器。②-f:根据条件过滤显示的内容。③-l:显示最近创建的容器。(小写L)④-n:列出最近创建的n个容器。⑤-q:静默模式,只显示容器ID。⑥-s:显示总的文件的大小。任务3.1认识Docker技术相关知识3.1(2)列出容器。dockerps命令用于列出本地宿主机上的容器。例如,列出所有本地宿主机正在运行的容器信息的代码如下。[root@localhost~]#dockerps#默认列出本地宿主机上正在运行的容器如果要列出所有的容器,则使用命令:[root@localhost~]#dockerps–a任务3.1认识Docker技术相关知识3.1(2)列出容器。dockerps命令用于列出本地宿主机上的容器。如果列出本地宿主机上所有容器的ID。[root@localhost~]#dockerps–a–q如果列出本地宿主机上最近创建的2个容器信息。[root@localhost~]#dockerps–n2任务3.1认识Docker技术相关知识3.1(3)启动容器。启动容器有两种方式:一种是将终止状态的容器重新启动,另一种是基于镜像创建一个容器并启动。①启动终止的容器。dockerstart命令用于将一个已经终止的容器启动起来。其命令格式如下。dockerstart[OPTIONS]CONTAINER[CONTAINER...]例如,启动名称为centos7的已终止容器的代码如下。[root@localhost~]#dockerstartcentos7容器启动成功后,容器状态变为“UP”。启动容器时,可以使用容器名、容器ID或容器短ID缩写,但要求短ID缩写必须唯一。例如:[root@localhost~]#dockerstartcc9a44968e或[root@localhost~]#dockerstartcc注意:dockerstart命令只是将容器启动起来,如果需要进入交互式终端,则可以利用dockerexec命令,并指定一个bash。任务3.1认识Docker技术相关知识3.1(3)启动容器。②新建并启动容器。除了利用dockercreate命令创建容器并通过dockerstart命令来启动容器之外,也可以直接利用dockerrun命令新建并启动容器。dockerrun命令等价于先执行dockercreate命令,再执行dockerstart命令。其命令格式如下。dockerrun[OPTIONS]IMAGE[COMMAND][ARG...]//命令选项的说明同dockercreate命令OPTIONS选项的说明如下。①-d:后台运行容器,并返回容器ID。②-i:以交互模式运行容器,通常与-t同时使用。③-t:为容器重新分配一个伪输入终端,通常与-i同时使用。任务3.1认识Docker技术相关知识3.1(3)启动容器。④--name="containername":为容器指定一个容器名。⑤--dns:指定容器使用的DNS服务器,默认和本地宿主机一致。⑥-h"hostname":指定容器的hostname。⑦-eusername="ritchie":设置环境变量。⑧--cpuset="0-2"or--cpuset="0,1,2":绑定容器到指定CPU中运行。⑨-m:设置容器使用内存的最大值。⑩--net="bridge":指定容器的网络连接类型。[11]--link=[]:添加链接到另一个容器。[12]--expose=[]:开放一个端口或一组端口。任务3.1认识Docker技术相关知识3.1(3)启动容器。[13]–p:端口映射

前面我们实现了通过网络端口来访问运行在docker容器内的服务。

容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过

-P

-p

参数来指定端口映射。两种方式的区别是: -P:是容器内部端口随机映射到主机的端口。 -p:

是容器内部端口绑定到指定的主机端口。

我们使用

-P

绑定端口号,使用

dockerps

可以看到容器端口5000绑定主机端口32768。任务3.1认识Docker技术相关知识3.1(3)启动容器。

我们也可以使用

-p

标识来指定容器端口绑定到主机端口。

任务3.1认识Docker技术相关知识3.1另外,我们可以指定容器绑定的网络地址,比如绑定。

这样我们就可以通过访问:5001来访问容器的5000端口。上面的例子中,默认都是绑定tcp端口,如果要绑定UDP端口,可以在端口后面加上

/udp。(3)启动容器。–p:端口映射上面的例子中,默认都是绑定tcp端口,如果要绑定UDP端口,可以在端口后面加上

/udp。

任务3.1认识Docker技术相关知识3.1(3)启动容器。例如,输出“helloworld”信息后容器自动终止的代码如下。[root@localhost~]#dockerruncentos:latest/bin/echo“helloworld”Helloworld[root@localhost~]#dockerps

–a通过输出结果可以看出,使用dockerrun命令输出“helloworld”信息后,容器自动终止,此时容器状态为“Exited”。该命令与本地直接执行/bin/echo“helloworld”命令几乎没有区别,无法知晓容器是否已经启动,也无法实现与用户的交互。任务3.1认识Docker技术相关知识3.1(3)启动容器。当利用dockerrun命令来创建并启动容器时,Docker在后台运行的流程如下。a.检查本地是否存在指定的镜像,若不存在,则从镜像仓库中下载。b.利用镜像创建并启动一个容器。c.分配一个文件系统,并在只读的镜像层外面挂载一个可写容器层。d.从宿主机的网桥接口中桥接一个虚拟接口到容器中。e.从地址池分配一个IP地址给容器。f.执行用户指定的应用程序。g.执行完毕后容器被终止。任务3.1认识Docker技术相关知识3.1(3)启动容器。如果需要实现与用户的交互操作,则可以启动一个bash终端。例如,输出“helloworld”信息后容器自动终止的代码如下。[root@localhost~]#dockerrun-itcentos:latest/bin/bash[root@99eb0e6b2204]#其中:-i选项表示允许容器的标准输入保持打开,-t选项表示允许Docker分配一个伪终端,并绑定到容器的标准输入上。在交互模式下,用户可以在终端上执行命令,例如:[root@99eb0e6b2204]#date可以输入exit命令或按CTRL+D组合键推出容器,此时容器处于“Exited”状态。任务3.1认识Docker技术相关知识3.1(3)启动容器。通常情况下,用户需要容器在后台以守护状态运行,而不是把执行命令的结果直接输出到当前宿主机中,此时可以使用-d参数。例如,基于registry:latest创建并在后台启动容器的代码如下。[root@registry~]#dockerrun-dit--namemyregistry-p5000:5000-v/myregistry:/var/lib/registryregistry:latest在根目创建挂载目录myregistry,利用registry镜像创建容器名为myresistry的容器,以提供私有仓库服务,并把宿主机/myregistry目录挂载到容器的/var/lig/registry目录上。并运行docerps命令查看容器是否处于运行(”UP”)状态。任务3.1认识Docker技术相关知识3.1(3)启动容器。任务3.1认识Docker技术相关知识3.1加了

-d

参数默认不会进入容器,让容器在后台运行;-i:让容器的输入保持打开状态,-t:让Docker分配一个伪终端;--name容器名字;-p指定端口映射,容器内部的5000端口映射到我们本地主机的5000端口上;-v:为容器添加数据卷,表示目录映射关系,主机的目录/myregistry映射到容器的/var/lig/registry。(4)进入容器。

当使用-d参数来创建容器时,由于容器在后台运行,因此无法看到容器中的信息,也无法对容器进行操作。如果需要进入容器的交互模式,则可以利用dockerattach命令或dockerexec命令。①dockerattach命令:dockerattach命令是Docker自带的命令,其命令格式如下。dockerattach[OPTIONS]CONTAINER】例如,利用centos镜像生成容器,并利用dockerattach命令进入容器的代码如下。[root@localhost~]#dockerrun–ditcentos:latest/bin/bash[root@localhost~]#dockerps–n1[root@localhost~]#dockerattach6506adadeba9[root@6506adadeba9]#任务3.1认识Docker技术相关知识3.1(4)进入容器。

②dockerexec命令在利用dockerexec命令进入交互式环境时,必须指定-i、-t参数以及Shell的名称。利用dockerexec和dockerattach命令均可进入容器,在实际应用中,推荐使用dockerexec命令[root@localhost~]#dockerrun–ditcentos:latest/bin/bash[root@localhost~]#dockerps–n1[root@localhost~]#dockerexec–it6506adadeba9/bin/bash[root@6506adadeba9]#任务3.1认识Docker技术相关知识3.1(4)进入容器。

利用dockerexec和dockerattach命令均可进入容器,在实际应用中,推荐使用dockerexec命令,原因如下:a.attach是同步的,若有多个用户attach到一个容器,则当一个窗口命令阻塞时,其他窗口都无法执行操作。b.利用dockerattach命令进入交互式环境时,使用exit命令退出之后,容器即终止,而dockerexec命令不会。任务3.1认识Docker技术相关知识3.1(5)启动、终止、重启容器。启动容器的命令的格式:dockerstart[OPTIONS]CONTAINER[CONTAINER...]终止容器的命令的格式:dockerstop[OPTIONS]CONTAINER[CONTAINER...]

重启容器的命令的格式:dockerrestart[OPTIONS]CONTAINER[CONTAINER...]

任务3.1认识Docker技术相关知识3.1(5)启动、终止、重启容器。例如,启动已被终止的容器名为mycentos容器的代码如下。[root@localhost~]#dockerstopmycentos例如,重启容器名为mycentos容器的代码如下。[root@localhost~]#dockerrestartmycentos除了利用dockerstop命令终止容器之外,当Docker容器中指定的应用程序终止时,容器也会自动终止。例如:用户利用exit命令或按CtRL+D组合键退出终端时,所创建的窗口立即终止,此时容器处于“Exited”状态。

任务3.1认识Docker技术相关知识3.1(6)删除容器。dockerrm命令可以删除一个或多个容器,默认只能删除非运行状态的容器,其命令格式如下。dockerrm[OPTIONS]CONTAINER[CONTAINER...]OPTIONS选项的说明如下。①-f:强制删除处于运行状态的容器。②-v:删除容器挂载的数据。例如,删除容器名为mycentos容器的代码如下。[root@localhost~]#dockerrmmycentos如果mycentos容器处于非运行状态,则可以正常删除;反之会报错,需要先终止容器再进行删除;也可以使用-f参数进行强制删除,命令如下:[root@localhost~]#dockerrm-fmycentos任务3.1认识Docker技术相关知识3.1(6)删除容器。也可在删除容器的时候,删除容器挂载的数据卷。例如,删除容器名为mycentos容器时,删除容器挂载的数据卷的代码如下。[root@localhost~]#dockerrm–vmycentos如果想要删除所有处于“Exited”状态的容器,则代码如下:[root@localhost~]#dockerrm$(sudodockerps-qfstatus=exited)如果想要删除孤立的容器,则代码如下:[root@localhost~]#dockercontainerprune还有一个删除容器的命令:

dockersystemprune命令用于清理没有使用的数据,包括镜像数据,已经停止的容器任务3.1认识Docker技术相关知识3.1(7)导入和导出容器。①导出容器如果要导出某个窗口到本地,则可以利用dockerexport命令,可将容器导出为TAR文件格式。其命令格式如下。dockerexport[OPTIONS]CONTAINER其中:OPTIONS为-o参数表示指定导出的TAR文件名。例如:将容器名为mycentos的容器导出,文件格式为“cent-日期”,其代码如下。[root@localhost~]#dockerexport–ocentos-date+%Y%m%d.tar

mycentos[root@localhost~]#lsanaconda-ks.cfgcentos-20230307.tar任务3.1认识Docker技术相关知识3.1(7)导入和导出容器。②导入容器可以利用dockerimport命令导入一个镜像,类型为TAR文件,其命令格式如下。dockerimport[OPTIONS][REPOSITORY[:TAG]]例如:从镜像归档文件centos7.tar创建镜像代码如下:也可以指定URL或者某个目录进行导入,命令如下:dockerimport/exampleimage.tgzexample/imagerepo任务3.1认识Docker技术相关知识3.1dockersave和dockerexport的区别是什么?dockersaveimages_name:将一个镜像导出为文件;dockerexportcontainer_id:将一个容器导出为文件。dockerimport和dockerload的区别是什么?dockerload命令导入镜像库存储文件到本地镜像库;dockerimport命令导入一个容器快照到本地镜像库。容器快照将会丢弃所有的历史记录和元数据信息,而镜像存储文件将保存完整记录,体积也会更大。两者的区别在于容器快照将会丢弃所有的历史记录和元数据信息,而镜像存储文件将保存完整记录,体积也会更大。此外从容器快照文件导入时,也可以重新指定标签等元数据。任务3.1认识Docker技术3.1相关知识(8)查看容器配置信息。dockerinspect命令用于查看容器的配置信息,包含容器名、环境变量、运行命令、主机配置、网络配置和数据卷配置等,其命令格式如下。dockerinspect[OPTIONS]CONTAINER|IMAGE|TASK[CONTAINER|IMAGE|TASK...]例如:查看容器名为centos7的容器的配置信息代码如下。任务3.1认识Docker技术相关知识3.1(8)查看容器配置信息。可以使用“--format”参数获取指定的数据。例如,获取容器名为mycentos容器的IP地址的代码如下。[root@localhost~]#dockerinspect--format='{{range.NetworkSettings.Networks}}ll.IPAddress}}{{end}}'mycentos任务3.1认识Docker技术相关知识3.1(9)查看容器日志。dockerlogs命令用于将标准输出数据作为日志输出到dockerlogs命令的终端上,常用于在后台运行的容器中,其命令格式如下。dockerlogs[OPTIONS]CONTAINEROPTIONS选项的说明如下。①-since:指定输出日志的开始日期,即只输出指定日期之后的日志。②-f:查看实时日志。③-t:查看日志产生的日期。④-tail=10:查看最后的10条日志。[root@localhost~]#dockerlogsf0d4ca773dbe任务3.1认识Docker技术相关知识3.1(10)其他容器管理命令。(a)dockerpause命令。dockerpause命令用于暂停容器进程。例如,暂停mycentos容器的进程的代码如下。[root@localhost~]#dockerpausemycentos(b)dockerport命令。dockerport命令用于查看容器与宿主机端口映射的信息。例如,查看容器relaxed_yonath的端口映射信息的代码如下。[root@localhost~]#dockerportrelaxed_yonath5000/tcp->:5000任务3.1认识Docker技术相关知识3.1(10)其他容器管理命令。(c)dockerrename命令。Dockerrename命令用于更改容器名称。例如,将容器名为centos7的容器更名为centos7-1的代码如下。[root@localhost~]#dockerrenamecentos7centos7-1(d)dockerstats命令。dockerstats命令用于动态显示容器的资源消耗情况,包括CPU、内存、网络I/O。例如,查看容器名为mycetnos的容器资源消耗情况的代码如下。[root@localhost~]#dockerstatsmycentos任务3.1认识Docker技术相关知识3.1(10)其他容器管理命令。(e)dockertop命令。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论