19、Docker Compose
编排(Orchestration)功能是复杂系统实现灵活可操作性的关键。特别是docker应用场景中,编排意味着用户可以灵活地对各种容器资源实现定义和管理。
在我们部署多容器的应用时:
- 要从Dockerfile build image或者从dockerhub拉取image
- 要创建多个container
- 要管理这些container(启动、停止、删除)
为了方便我们部署和管理多容器的应用,docker compose就出现了。
1|019.1 什么是docker compose
docker compose项目是docker官方的开源项目,负责实现对docker容器集群的快速编排。其代码在GitHub上开源https://github.com/docker/compose 。
- Docker Compose是一个工具
- 这个工具可以通过一个yml文件定义多容器的docker应用
- 通过一条命令就可以根据yml文件的定义去创建或者管理这多个容器
Compose定位是“定义和运行多个docker容器的应用”。它允许用户通过一个单独的docker-compose.yml
模板文件(YAML格式)来定义一组相关联的应用容器为一个项目(project)。
1|1Compose中有三个重要的概念:
- 服务(services)
一个service代表一个container,这个container可以从dockerhub的image创建,或者从本地的Dockerfile build出来的image来创建。
service的启动类似docker run,我们可以给其指定network和volume,所以可以给service指定network和volume的引用。
- 网络(networks)
- 数据卷(volumes)
1|2举例
- service举例
这个例子类似于运行了下面这条命令:
安装WordPress的一个docker compose文件:
2|019.2 docker-compose安装
3|019.3 docker-compose命令说明
4|019.4 通过docker-compose scale实现负载均衡
通过haproxy实现flask调用redis的负载均衡
docker-compose.yml:
Dockerfile:
app.py:
首先通过docker-compose up -d启动:
通过docker-compose ps查看:
通过 curl 127.0.0.1:8080
通过scale创建多个web服务的容器数,并且通过haproxy是爱你负载均衡:
再次通过 curl 127.0.0.1:8080
继续增加WEB容器的数量,并访问:
可以看出,通过docker-compose的scale可以快速的实现某个服务容器数量的增加,在访问量突增的情况下可以轻松应对,减轻服务器压力。
当访问量恢复正常的时候也可以5个docker-compose up --scale来减少容器的数量:
上述只是实现了单机的容器编排,毕竟单台服务器的资源是有限的,容器数量过多会导致单台服务器资源使用率不够用,但是,如果可以在多机服务器上编排容器数量,那么服务器的性能将会得到更好的利用,能够承受的并发将会呈指数上升。
在docker-compose 3.0之前,docker-compose只支持单机的容器编排,到3.0的时候,docker-compose已经可以支持多机的容器编排了,也就是说利用3.0及以上的docker-compose可以实现多服务器上的容器编排。
__EOF__

本文链接:https://www.cnblogs.com/jie-fang/p/10279774.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律