跳到正文
马克工具箱

Docker Compose 转 docker run

粘贴 compose.yaml 或 docker-compose.yml,为每个服务生成一条等效的 docker run 命令,适合在没有安装 Compose 的机器上临时启动容器,或者排查某个服务的启动参数。

在浏览器本地运行,输入的内容和文件都不会上传

Docker Compose → docker run
Docker Compose
docker run

使用步骤

  1. 在左侧粘贴 Compose 文件,或点「载入示例」。
  2. 右侧为每个服务生成一条 docker run 命令,按文件中的顺序排列。
  3. 检查黄色提示里没有转换的字段(如 build、deploy、depends_on),再复制命令执行。

参数说明

支持的字段
image、container_name、command、entrypoint、ports、volumes(短语法和长语法)、environment、env_file、networks、network_mode、restart、user、working_dir、labels、logging、ulimits、healthcheck、资源限制等。
不转换的字段
build、deploy、depends_on、secrets、configs 等只在 Compose 里有意义的字段会列在提示中。没有 image 的服务会用占位的镜像名,需要先自己构建。
多个网络
docker run 只能用 --network 连接一个网络,其余网络需要之后用 docker network connect 连接。

示例

像这样的一个服务:

services:
  web:
    image: nginx:1.27
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
      - data:/var/cache/nginx
    environment:
      TZ: UTC
    restart: unless-stopped
    depends_on: [db]

会变成:

docker run -d \
  --name web \
  -p 8080:80 \
  -v ./html:/usr/share/nginx/html:ro \
  -v data:/var/cache/nginx \
  -e TZ=UTC \
  --restart unless-stopped \
  nginx:1.27

depends_on 在 docker run 里没有对应的写法,所以只在提示里列出。它所指向的服务需要你自己按正确的顺序启动。相对路径 ./html 是相对于你运行命令时所在的目录解析的,所以要在包含这个目录的文件夹里运行。

常见问题

为什么命令里都有 -d?

Compose 默认在后台运行服务(docker compose up -d),所以生成的命令也带 -d。需要在前台看输出时去掉即可。

命名卷和网络需要先创建吗?

docker run 会自动创建不存在的命名卷,但自定义网络需要先执行 docker network create 网络名。

数据会上传吗?

不会。解析和转换都在浏览器中完成。

隐私说明

本工具完全在浏览器中运行,文件和文本都在你的设备上处理,不会上传到我们的服务器。

相关工具