🐳docker run 转 docker-compose.yml 在线工具 - 双向互转
很多镜像的文档只给了一条长长的 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)会逐条列出提示。
免费 · 无需注册 · 浏览器本地处理最后更新:
正在加载工具...
如何使用docker run 与 Compose 互转
- 1选择转换方向,粘贴 docker run 命令或 docker-compose.yml
- 2按需调整选项,检查下方列出的注意事项
- 3复制或下载生成的 docker-compose.yml / 命令脚本
常见问题
- 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 字段”。