跳到主要内容

docker compose 常用命令详解

自 Docker 20.10 版本起,官方推荐使用无中划线的 docker compose 命令,取代早期的 docker-compose。新版命令统一纳入 Docker CLI,更加一致、现代化。

本文将为你全面介绍 docker compose 的常用子命令及其参数,帮助你高效管理多容器应用。

基本格式

docker compose [子命令] [选项] [参数]

例如:

docker compose up -d

常用子命令详解

1. up 启动服务

启动并运行 docker-compose.yml 中定义的所有服务。

docker compose up

常用参数:

参数说明
-d后台运行(detached mode)
--build在启动前强制构建服务镜像
--force-recreate即使未改动也重新创建容器
--no-deps启动时不启动依赖服务

示例:

docker compose up -d
docker compose up --build

2. down 停止并移除容器、网络、卷等

docker compose down

常用参数:

参数说明
-v删除挂载的卷
--rmi all删除所有镜像
--remove-orphans删除未在 Compose 文件中定义的容器

示例:

docker compose down -v
docker compose down --rmi all --remove-orphans

3. ps 查看服务状态

列出当前项目的容器状态。

docker compose ps

常用参数:

参数说明
-a显示所有容器(包括停止的)
--services仅显示服务名
--quiet仅显示容器 ID

示例:

docker compose ps
docker compose ps --services

4. exec 在容器中执行命令

docker compose exec <服务名> <命令>

常用参数:

参数说明
-u指定用户名或 UID
-T不分配 TTY(适用于管道)

示例:

进入服务容器:

docker compose exec backend bash

执行迁移命令:

docker compose exec backend alembic upgrade head

5. logs 查看服务日志

docker compose logs

常用参数:

参数说明
-f实时滚动日志(类似 tail -f)
--tail N只显示最后 N 行

示例:

docker compose logs -f
docker compose logs -f backend

6. restart 重启服务

docker compose restart [服务名]

不加服务名表示重启所有服务。

示例:

docker compose restart
docker compose restart backend

7. build 构建服务镜像

docker compose build [服务名]

常用参数:

参数说明
--no-cache构建时不使用缓存
--pull拉取最新基础镜像

示例:

docker compose build
docker compose build backend
docker compose build --no-cache

8. stopstart

分别用于停止启动已存在的容器,不会删除它们。

docker compose stop [服务名]
docker compose start [服务名]

示例:

docker compose stop backend
docker compose start backend

9. run 临时运行一个服务容器

不影响主容器,用于一次性任务(如初始化、迁移等)。

docker compose run <服务名> <命令>

常用参数:

参数说明
--rm容器退出后自动删除
--no-deps不启动依赖服务
-T不分配 TTY(适用于 CI)

示例:

docker compose run --rm backend python manage.py migrate

10. config 检查 Compose 文件是否正确

docker compose config

显示合并后的配置,可用于调试。

小结

docker compose 是开发和部署多容器应用的重要工具,掌握这些命令将大大提升你的容器化工作效率。在开发过程中,建议将常用命令整理成脚本或 Makefile,提高重复操作的效率。

如果你正在开发基于微服务的项目或使用数据库等后端服务,不妨多尝试 Compose 提供的组合操作。