docker——compose容器编排!!!

2024-08-30 01:44
文章标签 docker compose 编排 容器

本文主要是介绍docker——compose容器编排!!!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

⼀、Docker-compose 定义
1. docker compose 是 docker 官⽅的开源项⽬,负责实现对docker 容器集群的快速编排(容器,依赖,⽹络,挂载。。)
2. compose 是 docker 公司推出的⼀个⼯具软件,可以管理多个docker 容器组成的应⽤
3. 需要定义⼀个 YAML 格式的配置⽂件 docker-compose.yml,好多个容器之间的调⽤关系
4. 使⽤ compose 的步骤、
5. 1. 使⽤ Dockerfile 定义各个微服务应⽤并构建出对应的镜像⽂件Dockerfile 的使⽤,以便可以在任何地⽅复制。
2. 使⽤ docker-compose.yml 定义⼀个完整的业务单元,安排好整体应⽤中的各个容器服务。
3. 最后,执⾏ docker-compose up 命令来启动并运⾏整个应⽤程序,完成⼀键部署。
⼆、Docker-compose 产⽣背景
1. 使⽤ Dockerfile 定义镜像⽂件,再⼿动构建、运⾏容器等操作,⽽微服务架构⼀般包含若⼲个微服务,且每个微服务⼀般都
会部署多个实例,所以,若每个微服务都需要⼿动启停,那么维
护量会⾮常庞⼤,并且⼯作效率也会很低。2. ⽽ compose 是⽤于定义和运⾏多容器 docker 应⽤程序的⼯具。通过 compose,可以使⽤ YML ⽂件来配置应⽤程序需要的所有服务。
3. 仅需使⽤⼀个命令,就可以从 YML ⽂件配置中创建并启动所有服务。
4. Compose 可以基于 Compose ⽂件帮我们快速的部署分布式应⽤,⽆需⼿动⼀个个创建和运⾏容器。
5. Compose ⽂件是⼀个⽂本⽂件,通过指令定义集群中的每个容器如何运⾏。
三、Docker-compose 核⼼概念
Docker-compose 将管理的容器分为三层:⼯程(project)、 服务(service)、容(container)
1. ⼯程:运⾏ compose 的⽬录下所有的⽂件,包括 dockecompose.yml、extends ⽂件、环境变量⽂件等组成⼀个⼯程, 若⽆特殊指定⼯程,⼯程名即为当前⽬录名。⼯程的默认配置⽂ 件为 docker-compose.yml,可通过环境变量 COMPOSE_FILE 或 -f 参数⾃定义配置⽂件,其定义了多个有依赖关系的服务及每个服务运⾏的容器。
2. 服务:⼀个⼯程中包含多个服务,每个服务中定义了容器运⾏的镜像、参数、依赖等。⼀个服务中可包括多个容器实例。3. 容器:被 docker-compose 管理或部署的容器集群,调⽤docker 服务提供的 API 来对容器进⾏管理,只要操作的平台⽀持 docker API,即可在其上进⾏ compose 的容器编排。
四、YAML ⽂件的格式和语法
1、YAML ⽂件格式
1. yaml 是⼀种标记语⾔很直观的数据序列化格式,可读性很⾼。类似于 xml 描述性语⾔,语法⽐xml简单的很多。
2. yaml 数据结构通过缩进进⾏表示,连续的项⽬通过减号来表示,键值对⽤冒号分隔,数组⽤中括号括起来,hash⽤花括号括起来。
3. yaml ⽂件的基本格式由⼀系列键值对构成。每个键值对都⽤冒
号“: ”分隔key: value
1. 在 yaml 中,键和值之间只需要⼀个空格,这是为了保证 yaml⽂件的可读性和⼀致性
2. 对于字符串值,可以使⽤单引号或者双信号将其括起来,这样可以避免出现特殊字符或空格等问题name: 'Meng Mr'
age: "34"1. 如果值包含特殊字符(如冒号或短横线),则应该使⽤引号将其括起来description: "This is a YAML file: good for configuation
files."
2、YAML 注意事项
1. 不⽀持制表符 tab 键缩进,需要使⽤空格缩进。
2. 通常开头缩进 2 个空格。
3. 字符后缩进 1 个空格,如:冒号,逗号,横杠。
4. ⽤ # 表示注释。
5. 如果包含特殊字符⽤单引号引起来。
6. 布尔值(true、false、yes、no、on、off)必须使⽤“”引号括起
来,这样分析器会将它们解释为字符串。
3、列表和数组
在yaml中,可以使⽤“-”符号表示⼀个列表和数组
fruits: # fruits是⼀个键,它对应⼀个列表,包含三个元
素:apple、banana、orange
- apple # fruits为⼀个⼤项,下⾯的⼩项只需要缩进⼏个
空格,与其他项⽬对⻬即可
- banana
- orange
4、嵌套数据结构
yaml⽀持嵌套数据结构,可以⽤缩进来表示不同层级之间的关系,可使⽤ # 号表示注释信息。
person: name: 'Meng Mr' # 两个空格,name和age是person的⼀
级⼦节点age: "34"address: # address是person的⼆级⼦节点street: '123 Main St' # address节点包含了
street、city、state和zip四个⼀级⼦节点city: 'Anytown'state: 'CA'zip: '12345'
五、Docker-compose 安装
1. 官⽹:https://docs.docker.com/compose/
2. Github:https://github.com/docker/compose#docker-compose-v2
3. 需要提前添加好 apt 仓库,因为之前安装过 docker,所以不需
要在准备。
[root@docker ~]# yum -y update
[root@docker ~]# yum -y install docker-composeplugin
# 通过检查版本来验证 Docker Compose 是否已正确安装
[root@docker ~]# docker compose version
Docker Compose version v2.20.2
[root@docker ~]#
六、docker-compose 命令解析
1、⽂件内常⽤指令字段
(1)version
指定了Docker compose编排⽂件的版本
Docker Compose ⽬前有三个版本,分别为 Version1、
Version2和Version3。
Version1 是较早的版本,它将来会被弃⽤。
Version2 是⽬前的稳定版本,⽀持更多的指令。
在功能上与 Version2 类似,但进⾏了⼀些改进和扩展,例如增加了对 Docker BuildKit 的⽀持,可以加速构建过程。
(2)service
指定了在 docker compose 编排中要运⾏的服务,每个服务都有⼀
个名称,并指定要使⽤的镜像和容器的配置选项。
services:mysql: #服务名
# 再往下可以对该服务进⾏定义,⽐如指定映射端⼝,指定使⽤的
镜像等,但要注意缩进格式。
(3)image
指定要使⽤的 docker 镜像。
services:mysql: # 服务名image: mysql:5.5 # 指定mysql镜像,如果主机内不存在
该镜像,会从登录的docker镜像仓库内拉取,⼀般都是从
dockerhub上拉取
(4)build
允许在 docker compose 编排中指定 dockerfile 的位置。
services:mysql: # 服务名build: /docker/mysql # 这⾥为⽤户微服务⽂件夹,
⾥⾯存放的是该服务代码jar包和Dockerfile⽂件
(5)environment
指定了要设置的环境变量。
services:mysql: # 服务名environment: # 下⾯是MySQL环境变量的例⼦MYSQL_ROOT_PASSWORD: 000000 # 设置MySQL的
root⽤户的密码MYSQL_DATABASE: database # 指定要创建的数
据库名称MYSQL_USER: user # 指定要创建的
MySQL⽤户名MYSQL_PASSWORD: 123 # 指定要创建的
MySQL⽤户的密码
(6)volumes
挂载宿主机路径或命名卷
1. 指定路径挂载
services:mysql: # 服务名volumes:
- ./mysql/data:/var/lib/mysq # 直接指定路径挂载
1. ⽣成 volume 卷挂载
[root@doc ~]# docker volume create mysql # ⽣成名为
mysql的volume卷
[root@doc ~]# vim docker-compose.yml
services:mysql: # 服务名volumes:
- mysql:/var/lib/mysq # 指定volume卷挂载
1. 共享⽬录挂载
[root@doc ~]# vim docker-compose.yml
version: '2' # 使⽤共享⽬录挂载只有‘2’版本⽀持
service:mysql: # 服务名volumes:
- /var/lib/mysql # 将这个⽬录作为共享⽬录nginx:volumes:
- /usr/local/nginx/htmlphp:volumes_from: # 共享⽬录来⾃- mysql # 挂载的共享⽬录,挂载后会在容器内⽣成与
被挂载的⽬录同名的路径- nginx # 共享挂载可以是⼀个列表
(7)port
指定了要宿主机映射到容器的端⼝,端⼝不能低于 60(宿主机端⼝:容器端⼝),如果选择的端⼝号低于 60,可能会与系统保留的知名端⼝冲突。
services:mysql: # 服务名ports:
- 3306:3306 # 宿主机端⼝:容器端⼝

(8)expose
⽤于在 docker 容器内部暴露端⼝的选项。
services:mysql: # 服务名expose:
- 3306
(9)networks
加⼊⽹络,引⽤顶级 networks 条⽬.
networks: # 与services同级dev: # ⾃定义或已存在的⽹络设备名driver: bridge # 设备类型:⽹桥external: true # 外部存在:是
(10)hostname
设定容器主机名
services:mysql: # 服务名hostname: mysql
(11)command
指定容器启动时要运⾏的命令,覆盖构建时的默认命令
services:mysql: #服务名command: --character-set·server=utf8
2、docker compose 命令选项
1. build:重新构建服务
2. ps:列出容器
3. up:启动所有docker-compose服务
4. up -d:启动所有docker-compose服务启动并后台运⾏
5. exec:进⼊容器实例内部
6. scale:指定⼀个服务器启动数量
7. top:显示容器进程
8. logs:查看容器输出⽇志
9. down:停⽌并删除容器、⽹络、卷、镜像
10. stop:停⽌服务
11. start:启动服务
12. restart:重启服务
13. config:检查配置
14. config -q:检查配置,有问题才有输出
15. --version:查看版本

这篇关于docker——compose容器编排!!!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119447

相关文章

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启

debian12安装docker的实现步骤

《debian12安装docker的实现步骤》本文主要介绍了debian12安装docker的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录步骤 1:更新你的系统步骤 2:安装依赖项步骤 3:添加 docker 的官方 GPG 密钥步骤

SpringIOC容器Bean初始化和销毁回调方式

《SpringIOC容器Bean初始化和销毁回调方式》:本文主要介绍SpringIOC容器Bean初始化和销毁回调方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录前言1.@Bean指定初始化和销毁方法2.实现接口3.使用jsR250总结前言Spring Bea

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

如何高效移除C++关联容器中的元素

《如何高效移除C++关联容器中的元素》关联容器和顺序容器有着很大不同,关联容器中的元素是按照关键字来保存和访问的,而顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的,本文介绍了如何高效移除C+... 目录一、简介二、移除给定位置的元素三、移除与特定键值等价的元素四、移除满足特android定条件的元

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文