Linux如何使用Docker Compose编排_Linux Docker Compose编排详解

胖涛小哥_9920

胖涛小哥_9920

2026-04-06

519人浏览

原创

linux下用docker-compose编排多容器应用的核心是写对docker-compose.yml并执行命令;安装失败常见于未安装、路径/权限问题或版本不匹配;yaml缩进错误、字段误用、depends_on逻辑误解、卷清理不当等是主要故障点。

linux如何使用docker compose编排_linux docker compose编排详解

Linux 下用 docker-compose 编排多容器应用,核心就一条:写对 docker-compose.yml,再在同级目录下执行命令——不是靠记一堆 docker run 参数硬凑,也不是靠 shell 脚本拼凑启动顺序。

docker-compose 安装失败或版本不匹配的常见表现

执行 docker-compose --version 报错 command not found,或提示 docker-compose: command not found,基本是没装、路径不对、权限缺失;若报错 ERROR: Version in "./docker-compose.yml" is unsupported,则是 docker-compose 版本太低,不支持你写的 version: '3.8' 这类高版本字段。

  • 官方二进制安装最稳:用 curl -L "https://github.com/docker/compose/releases/download/v2.36.2/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose(注意替换最新版号)
  • 必须加可执行权限:chmod +x /usr/local/bin/docker-compose
  • 验证前先确认 Docker 引擎已运行:systemctl is-active docker 应返回 active
  • Compose v2+ 与 Docker Engine 20.10+ 兼容性最好;v1(如 1.29.2)只支持到 version: '3.9',但已停止维护,别用

docker-compose.yml 缩进错误和字段误用导致服务起不来

YAML 对空格极其敏感,Tab 键、多缩少缩、冒号后缺空格,都会让 docker-compose config 直接报错退出,up 命令根本不会执行。

  • services 下每个服务名顶格写,其子字段(如 image、ports)必须统一用 2 个空格缩进
  • environment 下变量要写成 KEY: value 或 - KEY=value,不能混用;ports 必须是字符串数组:["8080:80"],写成 8080:80(无引号)会解析失败
  • depends_on 只控制启动顺序,不等待依赖服务“就绪”;比如 db 容器启动了,但 PostgreSQL 还没完成初始化,web 就可能连不上——得靠应用层重试或加 healthcheck
  • 网络互通靠默认 default 网络,服务间直接用服务名当 hostname,比如 redis 服务,其他容器里写 redis:6379 就行,不用配 IP

docker-compose up -d 启动后容器立即退出的排查点

执行 docker-compose up -d 后 docker-compose ps 显示状态是 Exit 1 或 Restarting,说明容器启动失败,不是挂了,是根本没跑起来。

  • 先看日志:docker-compose logs -f <service_name></service_name>,重点找 exec user process caused: exec format error(架构不匹配)、no such file or directory(入口脚本路径错)、Permission denied(缺少执行权限)
  • 检查镜像是否真能本地拉取:docker pull nginx:alpine,避免因网络或仓库限制造成静默失败
  • 绑定挂载路径宿主机不存在会失败,比如 volumes: ["./conf:/etc/nginx/conf.d"],但当前目录下没有 conf 文件夹,就得提前 mkdir conf
  • 使用 command 覆盖默认启动命令时,如果写成 command: python app.py,实际等价于 sh -c "python app.py",容易因 shell 解析出错;更稳妥写法是 command: ["python", "app.py"]

docker-compose down 清理不干净,下次 up 失败

docker-compose down 默认只删容器和网络,不删命名卷(volumes),也不删构建的镜像。残留卷会导致数据冲突,比如 PostgreSQL 第二次启动拒绝覆盖已有数据目录。

  • 要彻底清理(含命名卷):docker-compose down -v;但注意:这会丢掉所有持久化数据,生产慎用
  • 想保留数据又避免冲突?把卷声明成外部卷:volumes: [mydata:/var/lib/postgresql/data],并在 volumes: 段显式定义 mydata: {},这样 down -v 才会删它
  • 构建的镜像不会被自动清理,多次 up --build 会堆积大量悬空镜像,定期执行 docker image prune -f
  • 环境变量从 .env 文件加载,但该文件不会被 down 影响;若改了 .env 却没重启服务,旧值仍生效——记得 down 后再 up

真正卡住人的往往不是语法,而是 YAML 缩进肉眼难辨、服务健康状态没等齐、卷路径权限不对、或者以为 depends_on 能替代应用层连接池重试逻辑。动手前先 docker-compose config 验证结构,启动后立刻 logs -f 看输出,比反复猜快得多。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.27

383

5

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3227

6

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

2023.08.04

5885

6

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

561

5

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.07.09

1476

5

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

2024.08.07

3938

3

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

2026.01.13

122

12

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

2026.01.13

437

23

Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建
Nginx跨平台安装实操指南:Windows、macOS与Linux环境快速搭建

本指南详解Nginx在Windows、macOS及Linux系统的安装全流程。涵盖官方包解压、Homebrew一键部署、APT/YUM源配置及Docker容器化方案。无论新手或开发者,均可快速搭建运行环境,掌握跨平台核心指令,为后续配置与调优奠定坚实基础。

2026.03.16

159

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习