Docker Compose 命令速查表 - 多容器编排常用命令大全

面向需要把数据库、缓存、后端、前端等多个服务作为一个整体拉起、停止与升级的开发者。Compose 的核心价值不是命令本身,而是用一份 docker-compose.yml 锁定服务间的网络、依赖与配置,让整套环境可以重复起停。读完能独立用 up 拉起环境、用 logs 定位故障服务、用 down -v 彻底清理(并规避误删数据),以及用 --scale 做多实例扩容。

容器与编排·共 25 条命令·最后更新 2026-07-21
dockercompose编排多容器

典型使用场景

用一份 YAML 编排多容器应用:一键启动/停止整套服务、管理网络与共享卷、查看聚合日志、按服务扩缩容,并排查依赖顺序、端口冲突与健康检查失败的编排问题。

启动与停止 5

docker compose up -d
后台启动所有服务,不加 -d 会前台输出日志
docker compose up -d --build
启动前强制重新构建镜像
docker compose stop
停止服务但保留容器,可快速 start 恢复
docker compose down
停止并删除容器和网络,加 -v 连卷一起删
docker compose restart svc
重启指定服务

日志与状态 5

docker compose ps
列出项目内服务状态
docker compose logs -f svc
跟踪指定服务日志,省略 svc 看全部
docker compose logs --tail=100 svc
看指定服务最后 100 行
docker compose top
查看各服务容器内运行的进程
docker compose port svc 80
查看服务端口映射到主机的实际端口

配置与构建 5

docker compose config
校验并展开 compose 配置,看变量替换结果
docker compose build
构建所有服务的镜像,加 --no-cache 不用缓存
docker compose pull
拉取所有服务镜像,更新前先拉
docker compose exec svc sh
进入运行中的服务容器
docker compose run --rm svc cmd
对服务执行一次性命令,--rm 跑完删容器

网络与卷 5

docker compose up -d --scale svc=3
水平扩容指定服务到 3 个实例
docker network ls
查看网络,compose 项目会创建自己的网络
docker compose down -v
删除项目并清理命名卷,数据会丢慎用
docker volume ls
查看数据卷,compose 卷名格式为 项目名_卷名
docker compose config --volumes
列出 compose 文件定义的所有卷

常见问题 FAQ 5

Q: docker-compose up 和 docker-compose start 有什么区别?
A: docker compose up 会创建并启动容器(加 -d 后台运行),docker compose start 只启动已存在的停止容器,不会重新创建。
Q: 如何重新构建镜像?
A: docker compose build 重新构建所有服务镜像,加 --no-cache 禁用缓存强制全量构建。docker compose up -d --build 在启动前自动构建。
Q: 如何查看 Compose 项目的日志?
A: docker compose logs -f 查看所有服务日志,docker compose logs -f <service> 只看指定服务,加 --tail=100 限制行数。
Q: 如何只启动某个特定服务?
A: docker compose up -d <service> 只启动指定服务及其依赖,不启动其他服务。
Q: 如何删除所有容器和卷?
A: docker compose down -v 删除所有容器和网络并清理命名卷,数据会永久丢失,生产环境慎用。

参数矩阵

参数作用示例
up -d后台创建并启动所有服务docker compose up -d
down停止并移除容器、网络(默认保留卷)docker compose down
ps查看各服务运行状态docker compose ps
logs查看聚合日志docker compose logs -f web
exec在运行中服务内执行命令docker compose exec web sh
--build启动前重新构建镜像docker compose up -d --build
scale / up --scale扩缩指定服务实例数docker compose up -d --scale web=3
restart重启服务docker compose restart web
config校验并展开最终配置docker compose config
pull仅拉取服务所用镜像docker compose pull

易错点与避坑指南

现象up 后某个服务反复重启或一直 starting。

原因依赖服务未就绪(如 web 依赖 db 但无健康检查/depend_on 只等启动不等待就绪),或端口冲突。

处置为依赖服务加 healthcheck,用 depends_on 的 condition: service_healthy;用 docker compose logs 看具体报错。

现象容器间用服务名连不通。

原因服务不在同一自定义网络,或仍用 localhost 指向自身而非服务名。

处置Compose 默认建网络,用服务名(如 db)作主机名;应用连接串写服务名而非 127.0.0.1。

现象修改了 docker-compose.yml 但 up 没生效。

原因直接改文件未加 --build,或旧容器未重建。

处置改了构建相关配置后用 docker compose up -d --build;纯运行参数改动先 down 再 up。

现象down 后数据没了。

原因数据写在容器层而非命名卷,down 默认删除容器。

处置在 compose 中用 named volume 持久化数据;down 默认保留卷,必要时才加 -v 清理。

现象多个项目端口/网络名冲突。

原因Compose 默认项目名相同导致资源命名冲突。

处置用 -p 或 COMPOSE_PROJECT_NAME 区分项目;或在 compose 中显式命名网络/卷。

现象构建缓存导致代码改动没进镜像。

原因COPY 放在依赖安装之前,或 .dockerignore 漏配导致缓存命中。

处置把不常变的层放前面;用 --build 强制重建;检查 .dockerignore 是否排除了应包含的目录。

排障路径

  1. 1先校验配置再启动

    docker compose config

    展开并验证 YAML,避免 up 时因配置错误整体失败。

  2. 2查看各服务状态与退出码

    docker compose ps

    State 列直接显示 Exit/Restarting,定位问题服务。

  3. 3跟踪某服务日志

    docker compose logs -f web

    启动卡住时看该服务的实时输出。

  4. 4在运行中的服务内排查

    docker compose exec web sh

    进容器验证网络连通、文件与进程状态。

提示

  • compose 命令默认在当前目录找 docker-compose.yml,用 -f 指定其他文件,-p 指定项目名。
  • down 默认不删卷,加 -v 才删;生产数据卷删除前先备份,命名卷删了数据找不回。
  • --scale 扩容的服务端口不能写死宿主机端口,否则多实例端口冲突起不来。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年7月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们