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

相关文章

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

docker-compose安装和简单使用

本文介绍docker-compose的安装和使用 新版docker已经默认安装了docker-compose 可以使用docker-compose -v 查看docker-compose版本 如果没有的话可以使用以下命令直接安装 sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-c

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4

Windows与linux中docker的安装与使用

windos中安装使用docker 下载Docker_Desktop 安装包进入docker官网下载Docker_Desktop: https://www.docker.com/ 启用wsl 我们搜索“启用或关闭Windows功能”,打开后勾选适用于Linux的Windows 子系统 Docker_Desktop设置 出现Docker Engine stopped的解决