docker容器编排工具 docker compose

一、docker compose概述:

1.docker compose 是一个用于定义和运行多容器docker应用程序工具

2.docker compose主要功能:

定义服务:

使用yaml格式的配置文件来定义一组相关的容器服务,每个容器可以指定镜像、端口映射、环境变量、存储卷等参数。

一键启动和停止:

通过一个简单的命令可以启动或停止整个应用程序包含的所有容器

可以使用docker-compose up 命令可以启动配置文件中定义的所有服务,使用docker-compose down可以停止并删除这些服务

服务编排:

可以定义容器之间的依赖关系,确保服务按照正常的顺序启动和停止,即可以指定数据库服务必须在web容器之前启动

支持网络配置,使不同服务的容器可以相互通信。可以定义一个自定义网络并将所相关的容器连接到这个网络上

环境变量管理:

可以在配置文件中定义环境变量并在容器启动时传递给容器,使得在不同的环境中使用不同的配置更加容易,即可以定义一个数据库连接字符串常量可以在不同环境中设置不同的值。

3.工作原理:

读取配置文件:docker compose 读取yaml配置文件,解析其中定义的服务和参数

创建容器:根据配置文件中的定义,docker compose调用docker引擎创建的相应的容器,会下载所需要的镜像并设置容器的各种参数

管理容器的生命周期:docker compose监控容器的状态,并在需要时启动、停止、重启容器,还可以处理容器的故障恢复,如自动重启失败的容器

4.docker compose中的管理层:

服务是一个应用的容器,实际上可以包括若干运行相同镜像的容器实例

项目是由一组关联的应用容器组成的一个完整的业务单元,在docker-compose.yml文件中定义

容器是服务的具体实例,每个服务可以由一个或者多个容器。容器时基于服务定义的镜像创建的应用实例

5.docker compose常用命令:

服务管理:

docker-compose up:

启动配置文件中定义的所有服务

可以使用-d参数在后台启动服务

可以使用-f来指定yml文件

docker-compose down:

停止并删除配置文件中定义的所有服务以及相关的网络和存储卷

docker-compose start:

启动已经存在的服务,但不会创建新的服务

docker-compose stop:

停止正在运行的服务

docker-compose restart:

重启服务

服务状态查看:

docker-compose ps:

列出正在运行的服务以及它们的状态,包括容器的id 端口映射 名称等信息

docker-compose logs:

查看服务的日志输出,后面加指定服务的名称可以查看特定服务的日志

其他操作:

docker-compose exec:

在正在执行的服务容器中执行命令

docker-compose pull:

拉取配置文件中定义的服务所使用的镜像

docker-compose config:

验证并查看解析后的compose文件内容

6.docker compose中的yml文件:

用于定义和配置多容器应用程序的各个服务

服务:

**服务名称:**每个服务在配置文件中都有唯一的名称,用于在命令行和其他部分引用该服务

**镜像:**指定服务所使用的docker镜像名称和标签

端口映射:将容器内部的端口映射到主机的端口,一边外部可以访问容器内的服务

环境变量:

存储卷

**命令:**覆盖容器启动时默认执行的命令

7.利用容器编排完成haproxy和nginx负载均衡:

bash 复制代码
services:
web1:
image: nginx:latest
container_name: web1
restart: always
networks:
- mynet1
expose:
- 80
volumes:
- /docker/web/html1:/usr/share/nginx/html
web2:
image: nginx:latest
container_name: web2
restart: always
networks:
- mynet1
expose:
- 80
volumes:
- /docker/web/html2:/usr/share/nginx/html
haproxy:
image: haproxy:2.3
container_name: haproxy
restart: always
networks:
- mynet1
- mynet2
volumes:
- /docker/conf/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
ports:
- 80:80
networks:
mynet1:
driver: bridge
mynet2:
driver: bridge
相关推荐
三十..5 分钟前
Redis 核心原理与高可用架构实践
运维·数据库·redis
我是谁??2 小时前
ubuntu22.04 通过docker部署vLLM(Qwen3-0.6B)大模型+New API+OpenWebUI
docker·容器·vllm
jinglong.zha2 小时前
LScript-从零基础到商业变现的AI自动化学习平台
运维·学习·自动化
运维瓦工2 小时前
DevOps 生态介绍(十):Docker Compose 核心 YAML 配置详解与常用命令大全
spring cloud·docker·容器
Adorable老犀牛2 小时前
Telegraf:InfluxData 出品的指标采集代理
运维·telegraf
云烟成雨TD3 小时前
Spring AI 1.x 系列【59】容器化开发支持:Docker Compose 与 Testcontainers
人工智能·spring·docker
北塔软件3 小时前
北塔软件智能体平台 | 不只监控,更是AI时代的数据资产
运维·人工智能·知识库·北塔软件
Plastic garden3 小时前
K8s(10)NFS 的动态 PV 创建数据库给k8s的mysql和redis
docker·容器·kubernetes
AOwhisky3 小时前
学习自测与解析:MySQL第五、六、七期核心知识点详解
运维·数据库·笔记·学习·mysql·云计算
与海boy3 小时前
docker compose minio
docker·容器·eureka