当前位置:首页 > 文章列表 > 文章 > 软件教程 > Docker Compose dry-run 怎样预览服务启动会执行哪些操作

Docker Compose dry-run 怎样预览服务启动会执行哪些操作

来源:17golang原创 2026-10-26 02:19:11 0浏览 收藏

如果你想先知道 Docker Compose 启动项目会拉取什么、构建什么、创建哪些容器,可以把原命令前面加上 --dry-run。例如,docker compose --dry-run up --build -d 会输出一次预览计划,展示 pull、build、创建网络、创建容器、等待健康检查和启动等动作,但不会真的改变 Compose 栈状态。

官方地址:https://docs.docker.com/reference/cli/docker/compose/

要点速览
  • --dry-run 应该放在 docker compose 后面,后面的 up、--build、-d 和服务名保持真实执行时的写法。
  • 输出里的 DRY-RUN MODE 表示动作被模拟,不能把它当成容器已经创建或启动。
  • ps、ls、logs 本身是查询命令,不适合用 dry-run;需要查看它们时直接运行对应查询命令。

一、先判断命令是否值得预览

dry-run 的目标是提前查看会改变 Compose 栈的动作。最适合预览的是 up、pull、build、create 等命令,因为它们可能拉取镜像、构建镜像或创建容器。把这些动作提前展开,能在执行前发现服务范围过大、构建步骤不符合预期或依赖服务会被一并拉起等问题。

相反,ps、ls 和 logs 用来读取已经存在的项目、容器或日志状态,它们不负责改变栈状态。Docker 官方文档明确说明 dry-run 不能用于这类查询命令,所以不要为了统一格式给所有 Compose 命令都加上这个参数。

原创 Compose 命令审查界面区分可预览状态变更与不适用查询命令
图1:操作示意图,把 up、pull、build、create 与 ps、ls、logs 分成两组,帮助读者判断 dry-run 的使用边界;这是原创说明图,不是软件截图。

二、把真实启动参数原样放进预览命令

在 compose.yaml 所在目录执行命令。需要构建镜像时保留 --build,需要后台启动时保留 -d;如果只想预览某一个服务,也可以在命令末尾写服务名。这样得到的计划才和后面真正执行的动作一致。

# 进入包含 compose.yaml 的项目目录,避免读到其他项目的配置
cd ./compose-demo

# 只预览拉取、构建、创建和启动计划,不改变当前栈状态
docker compose --dry-run up --build -d

# 只预览 web 服务及其启动动作,保留真实执行时的服务范围
docker compose --dry-run up --build -d web

如果项目使用了多个 Compose 文件,继续按真实启动时的顺序传入 -f;如果需要指定环境文件,也把 --env-file 一起保留。预览命令不是新的配置解析器,它仍然读取你给出的项目文件和参数。

# 先指定基础文件,再指定覆盖文件;顺序会影响最终配置
docker compose --dry-run \
  -f compose.yaml \
  -f compose.dev.yaml \
  --env-file .env.dev \
  up --build -d

三、按输出顺序读懂动作计划

预览输出通常会用 DRY-RUN MODE 标记每个动作。阅读时不要只看最后一行,而要从资源准备到服务启动按顺序看一遍。一个包含数据库、后端和代理的项目,常见顺序是先拉取镜像,再构建需要本地 Dockerfile 的服务,然后创建网络与容器,等待数据库健康,最后启动依赖它的服务。

原创开发工具界面展示 Docker Compose dry-run 的拉取构建创建健康启动动作链
图2:结果示意图,用服务行和依赖箭头展示 pull、build、create、healthy、start 的预览关系;这是原创说明图,不是运行截图。
# 预览完整启动计划,输出中的每一项都只表示计划动作
docker compose --dry-run up --build -d

# 需要更容易复制到日志系统时,关闭彩色控制字符
docker compose --ansi never --dry-run up --build -d

看到 healthy 后才出现依赖服务的 start,通常说明 Compose 正在遵守健康检查条件;看到 Created 或 Started 时仍要记住这是模拟输出。dry-run 的价值是告诉你将会发生什么,不是替你完成资源创建。

四、用预览结果决定是否真的执行

可以把预览结果按三层快速核对:第一层看服务范围,确认没有误把数据库、代理或测试服务一起纳入;第二层看资源动作,确认 pull、build、create 是否符合当前环境;第三层看依赖关系,确认等待健康检查的服务不会因为启动顺序不对而失败。

# 预览通过后,去掉 --dry-run 才会真正创建或启动资源
docker compose up --build -d

# 如果只是想查看当前容器,不要使用 dry-run,直接查询状态
docker compose ps

# 如果只是想看服务日志,也直接读取日志输出
docker compose logs --tail=100 web

预览和执行之间如果修改了 Compose 文件、环境变量或镜像构建内容,应重新做一次 dry-run。否则你确认的是旧计划,真正执行的却是另一份配置。

常见误区

现象原因处理方式
输出里出现了 Created,但本机没有新容器这是 dry-run 的模拟结果去掉 --dry-run 后再执行真实命令
给 logs 加 dry-run 报错日志查询不改变栈状态直接运行 docker compose logs
预览的服务比预期多真实命令包含了全部服务或依赖服务检查命令末尾的服务名、依赖关系和 Compose 文件参数
预览顺序和执行结果不一致预览后又改了配置或环境变量用最终配置重新执行一次 dry-run

相关问题

dry-run 会拉取镜像或创建容器吗?

不会。它展示 Compose 计划执行的动作,但不会把这些状态变更真正应用到栈上。

可以只预览一个服务吗?

可以。在 up 后面写服务名,例如 docker compose --dry-run up -d web,但仍要留意该服务的依赖可能进入计划。

dry-run 和 docker compose config 有什么区别?

config 用来解析、合并并渲染 Compose 配置;dry-run 用来预览会改变栈状态的命令。前者回答“最终配置是什么”,后者回答“执行命令将做什么”。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
GitHub Pull Request 怎样设置必需评审人GitHub Pull Request 怎样设置必需评审人
上一篇
GitHub Pull Request 怎样设置必需评审人
VS Code 怎样为工作区配置独立环境变量
下一篇
VS Code 怎样为工作区配置独立环境变量
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    693次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    706次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    774次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    734次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    568次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码