




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Docker容器技术与应用湖北轻工职业技术学院Docker编排工具项目5项目背景随着容器技术的飞速发展,Docker成为应用部署的热门选择。但单个容器难以满足复杂业务需求,多容器协作成为常态。在此背景下,如何高效管理容器生命周期和部署复杂工作负载成为关键。Docker编排工具项目5Docker平台及周边生态系统提供了很多工具来管理容器的生命周期。容器编排工具将生命周期管理能力扩展到可在集群上部署复杂的、多容器的工作负载。本项目通过两个任务介绍了Compose编排工具和Swarm编排工具的使用方法。知识目标了解容器编排的管理方法。了解容器编排的基本使用方法。能力目标掌握Compose编排工具的使用方法。掌握Compose编排工具的管理方法。素质目标培养精益求精的工匠精神。树立诚实守信的职业素养。项目五:Docker编排工具目录任务5.1、Compose编排工具的使用任务5.2、Swarm编排工具的使用Docker数据卷管理回顾1、Docker数据卷的使用。2、Docker数据卷容器的使用。工程师小王在对Docker技术进行学习后,发现当有大量Docker容器需要手动部署时效率较低,通过查阅相关资料,小王发现可利用Compose工具来更高效地部署容器,于是公司安排小王编写Compose工具的安装及使用手册,以供公司相关技术人员学习,并在公司内部推广该技术。任务5.1Compose编排工具的使用任务要求5.1为什么使用Compose工具使用Docker布署应用的步骤是,先定义Dockerfile文件,然后使用dockerbuild构建镜像,再用dockerrun命令启动容器。 然而在生产环境,尤其是微服务架构中,业务模块一般包含若干个服务,每个服务一般都会部署多个实例。如一个Web网站,需要首先启动数据库服务器容器,再启动Web服务器容器,整个系统的布署或启停将涉及多个子服务的布署或启停,而且这些子服务之间还存在强依赖关系,手动操作不仅劳动强度大还容易出错,这就需要分别执行多条Docker命令,操作起来比较麻烦,还不便于统一管理。。为此,Docker引入了容器编排Docker-compose。它通过一个配置文件docker-compose.yml模板文件,来描述整个应用涉及的所有容器与容器之间的依赖关系,然后可以用一条指令来启动或停止整个应用。任务5.1Compose编排工具的使用相关知识5.1为什么使用Compose工具
Compose是Docker官方的开源项目,定位是“定义和运行多个Docker容器应用的工具”,其前身是Fig,负责实现对Docker容器集群的快速编排,实现配置应用程序的服务。Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持DockerAPI,就可以在其上利用Compose来进行编排管理。DockerCompose以项目为单位管理应用程序的部署,可以将它所管理的对象从上到下依次分为以下3个层次。(1)项目。(2)服务。(3)容器。任务5.1Compose编排工具的使用相关知识5.1Compose工具Compose有以下3个重要概念:(1)项目(Project):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml中定义,即Compose的一个配置文件可以解析为一个项目,Compose通过分析指定配置文件,得出配置文件所需完成的所有容器管理与部署操作。Compose的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷的生命周期管理。(2)服务(Service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。每个服务都有自己的名称、使用的镜像、挂载的数据卷、所属的网络、依赖的服务等。(3)容器任务5.1Compose编排工具的使用相关知识5.1Compose工具DockerCompose的基本步骤如下:(1)使用Dockerfile定义应用程序的环境,以便可以在任何地方分发应用程序,通过DockerCompose编排的主要是多容器的复杂应用程序,这些容器的创建和运行需要相应的镜像,而镜像则要基于Dockerfile构建。(2)使用Compose文件定义组成应用程序的服务。该文件主要声明应用程序的启动配置,可以定义一个包含多个相互关联的容器的应用程序。(3)执行docker-composeup命令启动整个应用程序。使用这条简单的命令即可启动配置文件中上的所有容器,不再需要使用任何shell脚本。任务5.1Compose编排工具的使用相关知识5.1docker-compose.yml文件
Compose文件是DockerCompose项目的配置文件,又称Compose模板文件。它用于定义整个应用程序,包括服务、网络和卷。Compose文件是文本文件,采用YAML格式,可以使用.yml或yaml扩展名,默认的文件名为docker-compose.yml。YAML是Java脚本对象简谱(JavaScriptObjectNotation,JSON)的一个子集,是一种轻量级的数据交换格式,因此,Compose也可以使用JSON格式,构建时需要明确指定要使用的文件名,如docker-compose-fdocker-compose.jsonup。建议统一使用YAML格式。编写Compose文件是使用DockerCompose的关键环节。任务5.1Compose编排工具的使用相关知识5.1YAML文件格式YAML是一种数据序列化格式,易于阅读和使用,尤其适合用来表示数据。YAML类似于可扩展标记语言(EXtensibleMarkupLanguage,XML),但YAML的语法比XML的语法简单得多。YAML的数据结构通过缩进表示,连续的项目通过减号表示,键值对冒号分隔,数据用括号([])括起来,hash用花括号({})括起来。任务5.1Compose编排工具的使用YAML文件格式5.1YAML文件格式使用YAML时需要注意如下事项:(1)通常开头缩进两个空格。(2)使用缩进表示层级关系,不支持使用制表符Tab键缩进,需要使用空格缩进,但相同层级应当左对齐(一般为2个或4个空格)。(3)每个冒号与它后面所跟的参数之间都需要一个空格,字符后缩进一个空格,如冒号、逗号、横杠。(4)如果包含特殊字符,要使用单引号('')括起来。(5)使用#号表示注释,YAML中只有行注释。(6)布尔值(true、false、yes、no、on、off)必须用双引号("")括起来,这样分析器才会将它们解释为字符串。(7)字符串可以不用引号标。(8)区分大小字符。任务5.1Compose编排工具的使用相关知识5.1YAML文件格式YAML表示的数据可分为以下3种类型:(1)序列。序列(Sequence)就是列表,相当于数组,使用一个短横线加一个空格表示一个序列项,实际上是一种字典格式。例如:-port(2)标量。标量(Scalar)相当于常量,是YAML数据的最小单位,不可再分割。YAML支持整数、浮点数、字符串、NULL、日期、布尔值和时间等多种标量类型。如:image:mysql:5.7(3)映射。映射(Map)相当于JSON中的对象,也使用键值对表示,只是冒号后面一定要加一个空格,同一缩进层次的所有键值对属于一个映射。任务5.1Compose编排工具的使用相关知识5.1docker-compose.yml文件docker-compose.yml文件包含version、services、networks和volumes四个部分,其中servers和networks是关键部分。version是必须指定的,而且总是位于文件的第一行,没有任何下级节点,它定义了Compose文件格式的版本。services、networks和volumes分别定义服务、网络和卷(存储)资源配置,都由下级节点具体定义。首先要在节下定义资源名称,在services、networks和volumes节下分别可以指定若干服务、网络和卷的名称,然后在这些资源名称下采用缩进结构“<键>:<选项>:<值>”定义其具体配置,键也被称为字段。服务定义包含为该服务启动的每个容器的配置,这与将命令行参数传递给dockercreate命令类似。同样,网络和卷定义类似于dockernetworkcreate和dockervolumecreate命令。任务5.1Compose编排工具的使用相关知识5.1docker-compose.yml文件services节用于定义不同的应用服务,服务定义了镜像、端口、网络和卷等,DockerCompose会将每个服务部署在各自的容器中。networks用于定义要创建的容器网络,DockerCompose会创建默认的桥接网络。volumes用于定义要创建的卷,可以使用默认配置,并将使用的Docker配置的默认驱动local(本地驱动)。任务5.1Compose编排工具的使用5.1.3docker-compose.yml文件5.1任务5.1Compose编排工具的使用相关知识5.1docker-compose.yml文件服务定义
在services节中定义若干服务,每个服务实际上是一个容器,需要基于镜像运行。每个Compose文件必须指定image或build键提供镜像,其他键是可选的。就是使用dockercreate命令一样,Dockerfile中的指令,如CMD、EXPOSE、ENV、VOLUME等,默认已经被接受,不必再在Compose文件中定义它们。
在services节中指定服务的名称,在服务名称下面使用键进行具体定义,下面介绍部分常用的键及其选项。(1)image标签。
(2)build标签。
(3)command标签。(4)dns标签。(5)depends_on标签。(6)environment标签。(7)env_file标签。(8)expose标签。
(9)links标签。(10)logs标签。(11)network_mode标签。(12)networks标签。(13)port标签。(14)volumes标签。任务5.1Compose编排工具的使用相关知识5.1服务定义常见的services书写规则如下:1.image标签image标签用于指定基础镜像。
services: web:image:nginx在services标签下的web为第二级标签,标签名可由用户自定义,它也是服务名称。image可以指定服务的镜像名称或镜像ID,如果镜像在本地不存在,则Compose会尝试获取这个镜像。任务5.1Compose编排工具的使用相关知识5.1服务定义2.build标签build标签用于指定Dockerfile所在文件夹的路径。该值可以是一个路径,也可以是一个对象。Compose会利用它自动构建镜像,并使用构建的镜像启动容器。
build:/path/to/build/dir也可以使用相对路径,即
build:./dir任务5.1Compose编排工具的使用相关知识5.1服务定义2.build标签可以设置上下文根目录,并以该目录指定Dockerfile。build:context:../dockerfile:path/of/Dockerfile可指定arg标签,与Dockerfile中的ARG指令一样,arg标签可以在构建过程中指定环境变量,并在构建成功后取消。build:context:./dirdockerfile:Dockerfileargs:buildno:1任务5.1Compose编排工具的使用相关知识5.1服务定义3.command标签command标签用于覆盖容器启动后默认执行的命令。
command:bundleexecthin-p3000也可以写为类似Dockerfile中的格式,例如:
command:[bundle,exec,thin,-p,3000]任务5.1Compose编排工具的使用相关知识5.1服务定义4.dns标签dns标签用于配置DNS服务器,其可以是一个具体值。
dns:14也可以是一个列表。dns:-14-15还可以配置DNS搜索域,其可以是一个值或列表。dns_search:dns_search:--任务5.1Compose编排工具的使用相关知识5.1服务定义5.environment标签environment标签用于设置镜像变量,与arg标签不同的是,arg标签设置的变量仅用于构建过程中,而environment标签设置的变量会一直保存在镜像和容器中。environment:RACK_ENV:developmentSHOW:'true'SESSION_SECRET:任务5.1Compose编排工具的使用相关知识5.1或者environment:-RACK_ENV=development-SHOW=true-SESSION_SECRET服务定义6.env_file标签env_file标签用于设置从env文件中获取的环境变量,可以指定一个文件路径或路径列表,其优先级低于environment指定的环境变量,即当其设置的变量名称与environment标签设置的变量名称冲突时,以environment标签设置的变量名称为主。env_file:.env可以根据docker-compose.yml设置路径列表。env_file:-./common.env-./apps/web.env-/opt/secrets.env任务5.1Compose编排工具的使用相关知识5.1服务定义7.expose标签expose标签用于设置暴露端口,只将端口暴露给连接的服务,而不暴露给主机。expose:-"8000"-"8010"任务5.1Compose编排工具的使用相关知识5.1服务定义8.port标签port标签用于对外暴露端口定义,使用host:container格式,或者只指定容器的端口号,宿主机会随机映射端口。ports:-"3000"-"8763:8763"-"8763:8763“注意:当使用host:container格式来映射端口时,如果使用的容器端口号小于60,则可能会得到错误的结果,因为YAML会将<xx:yy>格式的数字解析为六十进制,所以建议使用字符串格式。任务5.1Compose编排工具的使用服务定义5.1服务定义9.network_mode标签network_mode标签用于设置网络模式。network_mode:"bridge"network_mode:"host"network_mode:"none"network_mode:"service:[servicename]"network_mode:"container:[containername/id]"任务5.1Compose编排工具的使用相关知识5.1服务定义10.depends_on标签depends_on标签用于指定容器服务的启动顺序。 wordpress: depends_on:-dbimage:wordpress:latestvolumes:-/data/web_data:/var/www/html任务5.1Compose编排工具的使用相关知识5.1服务定义11.links标签links标签用于指定容器连接到当前连接,可以设置别名。links:-db-db:database-redis任务5.1Compose编排工具的使用相关知识5.1服务定义12.volumes标签
volumes标签用于指定卷挂载路径,可以挂载一个目录或者一个已存在的数据卷容器。可以直接使用“host:container”格式,或者使用“host:container:ro”格式,对于容器来说,后者的数据卷是只读的,这样可以有效保护宿主机的文件系统。任务5.1Compose编排工具的使用相关知识5.1服务定义12.volumes标签
volumes://只是指定一个路径,Docker会自动创建一个数据卷(该路径是容器内部的)
-/var/lib/mysql//使用绝对路径挂载数据卷
-/opt/data:/var/lib/mysql//以Compose配置文件为中心的相对路径作为数据卷挂载到容器
-./cache:/tmp/cache//使用用户的相对路径(~/表示的目录是/home/<用户目录>/或者/root/)
-~/configs:/etc/configs/:ro//已经存在的命名的数据卷
-datavolume:/var/lib/mysql任务5.1Compose编排工具的使用相关知识5.1服务定义13.volumes_from标签volumes_from标签用于设置从其他容器或服务挂载数据卷,可选的参数是:ro或者:rw,前者表示容器只读,后者表示容器对数据卷是可读可写的,默认情况下是可读可写的。volumes_from:-service_name-service_name:ro-container:container_name-container:container_name:rw任务5.1Compose编排工具的使用相关知识5.1服务定义14.logs标签logs标签用于设置日志输出信息。logging:driver:syslogoptions:syslog-address:"tcp://2:123"任务5.1Compose编排工具的使用相关知识5.1任务5.1Compose编排工具的使用相关知识5.1docker-compose.yml示例Compose的常用命令Compose的常用命令常跟在docker-compose主命令后面。docker-compose主命令的格式如下。 docker-compose[-f<arg>...][options][COMMAND][ARGS...]其常用选项说明如下。(1)-f:指定Compose配置文件,默认为docker-compose.yml。(2)-p:指定项目名称,默认为目录名。(3)--verbose:显示更多的输出。任务5.1Compose编排工具的使用相关知识5.1Compose的常用命令1.列出容器ps命令用于列出所有运行的容器,其命令格式如下。ps[options][SERVICE...]其常用选项说明如下。-q:只显示ID。例如,列出所有运行容器的代码如下。docker-composeps任务5.1Compose编排工具的使用相关知识5.1Compose的常用命令2.查看服务日志输出logs命令用于查看服务日志输出,其命令格式如下。
logs[options][SERVICE...]其常用选项说明如下。(1)-f,--follow:实时输出日志。(2)-t,--timestamps:显示时间戳。(3)--tail="all":从日志末尾显示行。例如,查看nginx的实时日志的代码如下。docker-composelogs-fnginx任务5.1Compose编排工具的使用相关知识5.1Compose的常用命令3.输出绑定的公共端口port命令用于输出绑定的公共端口,其命令格式如下。
port[options]SERVICEPRIVATE_PORT其常用选项说明如下。(1)--protocol=proto:TCP或UDP,默认为TCP。(2)--index=index:多个容器时的索引数字,默认为1。例如,输出eureka服务8761端口所绑定的公共端口,其代码如下。docker-composeporteureka8761任务5.1Compose编排工具的使用相关知识5.1Compose的常用命令4.重新构建服务build命令用于构建或重新构建服务,其命令格式如下。
build[options][--build-argkey=val...][SERVICE...]其常用选项说明如下。(1)--no-cache:不使用缓存构建镜像。(2)--build-argkey=val:设置构建时变量。例如,构建镜像的代码如下。docker-composebuild任务5.1Compose编排工具的使用相关知识5.1Compose的常用命令5.启动服务start命令用于启动指定服务已存在的容器,其命令格式如下。
start[SERVICE...]例如,启动nginx容器的代码如下。docker-composestartnginx任务5.1Compose编排工具的使用相关知识5.1Compose的常用命令6.停止服务stop命令用于停止已运行服务的容器,其命令格式如下。
stop[SERVICE...]例如,停止nginx容器的代码如下。docker-composestopnginx任务5.1Compose编排工具的使用相关知识5.1Compose的常用命令7.删除已停止服务的容器rm命令用于删除指定服务的容器,其命令格式如下。
rm[options][SERVICE...]其常用选项说明如下。(1)-f,--force:强制删除。(2)-s,--stop:删除容器时需要先停止容器。(3)-v:删除与容器相关的任何匿名卷。例如,删除已停止的nginx容器的代码如下。docker-composermnginx任务5.1Compose编排工具的使用相关知识5.1Compose的常用命令8.创建和启动容器up命令用于创建和启动容器,其命令格式如下。
up[options][--scaleSERVICE=NUM...][SERVICE...]其常用选项说明如下。(1)-d:在后台运行容器。(2)-t:指定超时时间。(3)-no-deps:不启动连接服务。(4)--no-recreate:如果容器存在,则不重建容器。任务5.1Compose编排工具的使用相关知识5.1(5)--no-build:不构建镜像,即使其会丢失。(6)--build:启动容器并构建镜像。(7)--scaleSERVICE=NUM:指定一个服务(容器)的启动数量。例如,创建并启动nginx容器,且容器在后台运行的代码如下。docker-composeup-dnginx任务5.1Compo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度智慧医疗影像系统正规购销合同
- 二零二五年度电子商务行业保密合同
- 二零二五年度劳务派遣人员安全生产责任书
- 2025版船舶抵押借款合同范本
- 2025版环境监测数据采集与分析服务合同
- 二零二五年工艺品文化体验馆合作经营合同参考
- 二零二五年度城市电网改造升级施工合作协议
- 2025版高科技企业员工劳动合同示范文本
- 二零二五版母婴护理服务+宝宝衣物洗涤服务协议
- 二零二五版冷链运输车辆大包工程施工与检测合同
- 信用卡案件实务培训
- 《外存储设备》课件
- 城市排水设施安全检查与维护规定
- DB32T 2060-2024 单位能耗限额
- 装配式建筑(含吊装)专项施工方案
- 院前及创伤气道管理
- 采购行业五年规划
- 基孔肯雅热的临床特征
- 医院服务意识与沟通培训
- 2024年执业药师继续教育专业答案
- 委托经营管理合同协议书
评论
0/150
提交评论