# docker run 转 docker-compose.yml 在线工具 - 双向互转

> 免费在线 docker run 与 docker-compose.yml 互转：支持端口、卷、环境变量、网络、重启策略、健康检查、资源限制、日志、GPU 等参数，不支持的参数会明确提示。

- 网址: https://qilingtools.com/zh/docker-convert
- 分类: 开发工具 (https://qilingtools.com/zh/dev)
- 标签: [格式转换](https://qilingtools.com/zh/tags/convert), [开发](https://qilingtools.com/zh/tags/dev), [运维部署](https://qilingtools.com/zh/tags/devops)
- 最后更新: 2026-10-26
- 价格: 免费，无需注册
- 隐私: 在浏览器本地处理，文件不上传服务器

很多镜像的文档只给了一条长长的 docker run 命令，而实际部署更适合写成 docker-compose.yml 统一管理；反过来，有时又需要把 Compose 里的某个服务临时用 docker run 跑起来。这个工具在两者之间双向转换。docker run 解析按 shell 规则处理引号、反斜杠续行和 && 连接的多条命令，支持 -d、--name、-p、-v、--mount、-e、--env-file、--restart、--network 与别名、-w、-u、--entrypoint、--privileged、--cap-add、--device、-l、--health-* 健康检查、-m / --cpus 等资源限制、--log-driver / --log-opt、--ulimit、--gpus、--add-host、--dns 等常用参数，镜像后面的命令会按参数拆成数组保留原样。生成的 Compose 用标准 YAML 输出，端口统一加引号，命名卷和自定义网络会自动声明在顶层。反向转换支持端口和卷的长短两种写法、环境变量对象或列表、YAML 锚点合并、deploy.resources 资源限制与 GPU，按 depends_on 排好启动顺序，相对路径挂载改写成 $(pwd)，并可同时生成 docker network create 和 docker volume create 命令。无法对应的参数（如 --rm、build、多网络、deploy.replicas）会逐条列出提示。

## 使用步骤

1. 选择转换方向，粘贴 docker run 命令或 docker-compose.yml
2. 按需调整选项，检查下方列出的注意事项
3. 复制或下载生成的 docker-compose.yml / 命令脚本

## 功能特点

- docker run → Compose 与 Compose → docker run 双向转换
- 支持多条命令、引号与续行，一次转换多个服务
- 端口、卷、环境变量、网络、健康检查、资源限制、日志、GPU
- 命名卷与自定义网络自动声明
- 按 depends_on 排序，自动生成 network / volume create
- 不支持的参数逐条提示
- 本地转换，不上传

## 常见问题

### docker run 的哪些参数在 Compose 里没有对应？

-d（Compose 默认后台运行 up -d）、--rm（Compose 容器会保留，一次性任务请用 docker compose run --rm）、-P 随机映射全部端口等运行时参数没有等价写法，会在注意事项中列出；其他常见参数基本都能一一对应。遇到工具不认识的参数也会原样列出，方便你手动处理。

### 为什么生成的 docker run 只连接了一个网络？

docker run 一次只能指定一个 --network，Compose 服务如果加入了多个网络，工具会用第一个网络启动容器，并提示用 docker network connect 把容器接入其余网络。另外 Compose 会自动创建项目网络，单独用 docker run 时请先执行生成的 docker network create 命令。

### Compose 里的 ${变量} 和相对路径怎么处理？

${VAR} 形式的变量会放在双引号里，交给你的 shell 在运行时展开，所以运行前需要先导出这些变量（例如 set -a; . ./.env; set +a）。./data 这样的相对路径在 docker run 里必须是绝对路径，工具会改写为 "$(pwd)/data"，请在 compose 文件所在目录执行。

### 还需要写 version 字段吗？

不需要。Compose V2（docker compose 命令）已经忽略顶层 version 字段，写了反而会出现过时警告，所以默认不输出。如果你还在用很老的 docker-compose 1.x，可以勾选“输出 version 字段”。

## 相关工具

- [JSON 格式化](https://qilingtools.com/zh/json): 免费在线 JSON 格式化：一键美化、压缩，实时语法校验并定位到出错行列，支持树形视图折叠、键名排序、转义与去转义、Unicode 转中文、复制下载，数据不上传。
- [Base64 编解码](https://qilingtools.com/zh/base64): 免费在线 Base64 编码解码工具：支持中文 UTF-8、URL 安全变体，文本与 Base64 互转，实时转换，本地处理不上传。
- [URL 编解码](https://qilingtools.com/zh/url-encode): 免费在线 URL 编码解码工具：encodeURIComponent 与 encodeURI 两种模式，处理中文、空格与特殊符号，本地实时转换不上传。
- [JWT 解析](https://qilingtools.com/zh/jwt): 免费在线 JWT 解析工具：解码 JWT 的 Header 与 Payload，展示过期时间、签发时间等，本地解析不上传，保护令牌安全。
- [时间戳转换](https://qilingtools.com/zh/timestamp): 免费在线 Unix 时间戳转换工具：时间戳与日期互转，自动识别秒/毫秒，显示本地时间、UTC、ISO 8601 和相对时间，实时更新。
- [哈希计算](https://qilingtools.com/zh/hash): 免费在线哈希/摘要计算工具：对文本或文件计算 SHA-1、SHA-256、SHA-384、SHA-512，使用浏览器加密接口本地完成，文件不上传。
- [UUID 生成](https://qilingtools.com/zh/uuid): 免费在线 UUID 生成器：使用加密安全随机数批量生成符合 RFC 4122 的 UUID v4，可大写、去连字符、加花括号，一键复制。
- [进制转换](https://qilingtools.com/zh/base-convert): 免费在线进制转换工具：二进制、八进制、十进制、十六进制及任意 2–36 进制互转，支持大整数（BigInt），本地实时计算。
