使用步骤
- 在左侧粘贴 docker run 命令,行尾反斜杠换行的多行命令也可以;多条命令用换行、分号或 && 分开。
- 右侧实时生成 Compose 文件,每条命令是一个服务,服务名取 --name,没有时取镜像名。
- 检查黄色提示里没有转换的参数,复制或下载 compose.yaml 后执行 docker compose up -d。
参数说明
- 支持的参数
- -p、-v、--mount、-e、--env-file、--name、--restart、--network、-w、-u、-h、--entrypoint、-l、--add-host、--dns、--cap-add/drop、--device、-m、--cpus、--shm-size、--ulimit、--log-driver/--log-opt、--health-*、-i、-t、--privileged、--init、--read-only 等。
- 命名卷和网络
- 命名卷(如 pgdata:/data)会在顶层 volumes 中声明;自定义网络会声明为 external: true,表示使用已经存在的网络。host、none 网络转换为 network_mode。
- 端口
- 端口映射一律加双引号。YAML 1.1 会把 22:22 这类写法当成六十进制数字,Docker 官方文档也建议写成字符串。
- 忽略的参数
- -d 和 --rm 在 Compose 中没有对应写法,直接忽略;--gpus 等不支持的参数会列在提示里。
示例
docker run -d --name web --restart unless-stopped -p 8080:80 \
-v ./html:/usr/share/nginx/html:ro -e TZ=Asia/Shanghai --memory 512m nginx:1.27
转换为:
services:
web:
image: nginx:1.27
container_name: web
restart: unless-stopped
mem_limit: 512m
ports:
- "8080:80"
environment:
- TZ=Asia/Shanghai
volumes:
- ./html:/usr/share/nginx/html:ro
常见问题
生成的文件需要写 version 吗?
不需要。当前的 Docker Compose(v2)已经不使用顶层 version 字段,写了也会被忽略并给出警告。
环境变量里的密码会上传吗?
不会。命令解析和转换都在浏览器中完成,不经过服务器。
能处理带引号的参数吗?
能。按 shell 规则处理单引号、双引号和反斜杠转义,例如 -e "MSG=hello world" 会得到完整的值。
隐私说明
本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。