把 docker run 命令一键转换成 docker-compose.yml:自动映射端口、卷、环境变量、重启策略、网络等常用参数,支持多行续行与 --flag=value 写法,未映射参数以警告提示。纯浏览器本地转换,命令不外传。
摘要:把 docker run 命令一键转换为 docker-compose.yml:端口、卷、环境变量、重启策略自动映射,未识别参数以警告列出。全程浏览器本地完成,命令不外传。
本地工具可在 DevTools → Network 搜索输入内容,通常不会出现在请求中。
使用指南
docker run 一长串参数能跑起来,但重启动、迁移、编排就难维护——docker compose 把「怎么跑」固化成 YAML。本工具把 docker run 命令翻译成等价的 compose 配置:端口、环境变量、卷、重启策略等映射到对应字段,纯文本解析、本地完成,粘贴的命令不上传。转换后仍需人工核对镜像标签、卷路径与启动依赖。
1. 转换一个 run 命令
参数写法不统一时(短横与长选项混用),以转换结果为准再对照原命令。缺省项不会被「猜」出来。
- 把完整的 docker run 命令粘进输入框(含 -d、-p、-v、-e、--name、--restart 等)。
- 点击转换,右侧生成等价的 compose YAML。
- 复制结果存为 docker-compose.yml,用 docker compose up -d 验证一次。
2. 转换后必做的三处人工核对
run 命令的参数只活在敲它的那一次会话里;compose 进版本库才可评审与回滚。
- 镜像与标签:漏了 tag 会默认 latest,行为可能变。
- 卷路径是宿主机路径:换机器要改绝对路径。
- 依赖顺序:需用 depends_on 表达,工具不会替你猜。
- 网络与密钥:敏感环境变量不要提交到公开仓库。
3. 为什么值得迁到 compose
机器重启后要么写进 shell 历史、要么靠人肉记忆。compose 文件可复制到任何机器,团队里「在我机器上能跑」的容器版,十有八九是没把 run 固化成 compose。短期脚本可以继续用 run;长期服务请尽快固化。
4. 常见映射边界
端口映射到 ports,环境变量到 environment,卷到 volumes,重启策略到 restart。部分冷门 flag 可能无法完整表达——转换后对照原命令,缺了就手写补上。
5. 和相邻工具
本页只做单条 run 的翻译起点,不是完整的编排设计器。
- 美化 YAML:相关格式化工具。
- 密钥勿进仓库:用 env 文件或密钥管理。
- 多服务编排:在 compose 里拆服务并写 depends_on。
6. 隐私与安全
命令可能含密码或 token,粘贴后注意清剪贴板与屏幕分享。本地解析不上传,但生成文件若提交 Git 仍会泄漏。处理含个人信息或密钥的内容时,即使计算在本地完成,也要留意屏幕分享、录屏与下载文件的二次传播路径。
常见问题
覆盖日常 90% 场景:-p 端口、-v 卷、-e 环境变量、--env-file、--name、--restart、--network、-h、-u、-w、--entrypoint、-m 内存、--cpus、--privileged、--mount(bind/volume 类型)以及镜像后的容器命令。未覆盖的参数不会让转换报错,会列在警告区提醒人工确认。
裸写 -e DEBUG(不带 = 值)表示透传宿主机环境变量,compose 文件无法表达这种引用。改写成 -e DEBUG=value 的完整形式后再转换。
至少三处:镜像漏写 tag 会默认 latest,行为可能变;卷路径是宿主机绝对路径,换机器要改;服务间依赖要用 depends_on 表达,工具不会替你猜。敏感环境变量也别随 compose 文件提交到公开仓库。
存为 docker-compose.yml 后运行 docker compose up -d 验证一次;现代 docker compose(v2)不需要 version 字段,本工具生成的就是这个格式。run 的参数只活在敲它的那次会话里,compose 文件进版本库才可评审、可回滚、可复制到任何机器。
不会。整条命令的翻译与 YAML 生成全部在你的浏览器内完成,页面不发出网络请求;含密码、内网地址的命令可以直接粘贴,但生成文件提交 Git 前记得清理密钥。
相关工具
相关文章
容器名冲突:The container name xxx is already in use 怎么解决?
docker run 报 Conflict. The container name /xxx/ is already in use?同名旧容器还在占着名字。覆盖 docker ps -a 找占名容器、rm -f 释放、compose down 清理项目残留、--rm 用完即删、restart 自动复活五种场景。
Docker port is already allocated:端口被容器占用的排查与修复
docker run 报 port is already allocated 或 bind: address already in use?因为端口被别的容器(docker-proxy)或宿主机进程占着。区分两类占用者的排查命令、docker compose 项目名冲突场景、127.0.0.1 与 0.0.0.0 绑定可共存的细节。
docker pull 报 pull access denied 怎么解决?镜像拉取被拒的 5 种原因
docker pull 报 pull access denied for xxx, repository does not exist or may require docker login?覆盖镜像名拼错、tag 不存在、私有仓库未登录、Docker Hub 限流、国内网络配镜像加速器五种根因,附 docker login 与加速器配置方法。