跳到主内容
UniKit

docker run 转 docker-compose

把 docker run 命令转成 docker-compose.yml:解析端口、卷、环境变量、网络、重启策略、cap-add、健康检查与启动命令,无法转换的选项以注释列出。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

docker run 命令

支持 -p/--publish、-v/--volume、-e/--env、--name、--network、--restart、--cap-add、--health-*、--entrypoint 与镜像后的启动命令;-d 与 --rm 会在注释里说明等价用法。

docker-compose.yml

生成结果

这个工具能做什么

  • 把从文档或同事那里抄来的 docker run 命令转成 docker-compose.yml,不用逐项查 compose 的字段名。
  • 把一次性容器固化成可维护的服务定义:端口、卷、环境变量、重启策略、cap-add、健康检查都会落到对应字段。
  • 排查「compose 里怎么写等价配置」:拿不准的选项会被列成注释并说明等价用法,比如 --rm 要用 docker compose run --rm。
  • 对照 compose 文件里各字段的实际取值:统计区会给出端口、卷、环境变量和 cap-add 的数量。

示例

输入

docker run -d --name web -p 8080:80 -v /srv/html:/usr/share/nginx/html:ro -e NODE_ENV=production --network appnet --restart unless-stopped nginx:alpine nginx -g 'daemon off;'

输出

# 无法自动转换的选项(notes / unsupported):
#   - -d / --detach → compose 默认后台运行,用 `docker compose up -d`

version: '3.8'
services:
  web:
    image: nginx:alpine
    container_name: web
    restart: unless-stopped
    ports:
      - 8080:80
    environment:
      - NODE_ENV=production
    volumes:
      - /srv/html:/usr/share/nginx/html:ro
    networks:
      - appnet
    command:
      - nginx
      - -g
      - daemon off;
networks:
  appnet: {}

镜像后的内容会原样作为 command 数组;--network 里用到的自定义网络会自动补到顶层 networks 下。

常见问题

哪些选项能自动转换?

-p/--publish、-v/--volume、-e/--env、--name、--network、--restart、--cap-add、--health-*、--entrypoint、--hostname,以及镜像名之后的启动命令。其余选项不会静默丢弃,会以注释形式列在文件开头。

-d 和 --rm 为什么不直接写进 YAML?

因为 compose 里没有对应的字段:服务默认就是后台运行(用 docker compose up -d),而临时容器要用 docker compose run --rm <service>。工具把这两点写成注释,避免你以为已经生效了。

卷挂载里的路径会被改写吗?

不会。挂载字符串(含 :ro / :rw 后缀)原样保留,只有「非绝对路径」的来源会被识别为具名卷并补到顶层 volumes 里,例如 -v data:/var/lib/data 会生成 volumes: { data: {} }。Windows 盘符路径也能正确识别。

--network host 会怎么处理?

host、none、bridge 这三种内置网络会转成 network_mode,不会在顶层新建网络;其它名字(如 appnet)视为自定义网络,加到服务的 networks 列表并在顶层 networks 里声明。

命令会上传到服务器吗?

不会。解析和 YAML 生成都在浏览器里完成,页面不发任何网络请求,包含内部地址或密码的命令可以放心粘贴。

关键词:docker rundocker composedocker-compose.ymlcompose容器转换containeryamldevops

同类工具