开发者 / Docker

docker run转Docker Compose转换器

将docker run命令转换为compose.yaml文件,处理端口、卷、环境变量、网络、重启策略、健康检查、GPU等内容;也可将Compose服务转换回docker run命令,并列出没有对应项的选项。

docker run转Docker Compose转换器: 工具会按照Shell的解析方式拆分命令,处理引号和转义,并将每个选项映射到对应的Compose键:-p映射到ports,-v和--mount映射到volumes,-e映射到environment,--restart映射到重启策略,--network映射到网络,--health-cmd映射到healthcheck,--gpus映射到设备预留等,此外还支持大约四十项。命名卷和网络会生成对应的顶层条目。多个命令会成为同一个文件中的多个服务。没有Compose对应项的选项会单独列出,不会在不作说明的情况下直接丢弃。 完全在浏览器中本地运行,文件不会上传到服务器。

使用次数
在浏览器中
费用
免费·无需注册
可用性
可直接使用
docker run转Compose本地处理

完全在浏览器中运行

compose.yaml

services:
  db:
    image: postgres:16
    container_name: db
    environment:
      - POSTGRES_PASSWORD=change-me
    volumes:
      - pgdata:/var/lib/postgresql/data
    ports:
      - 5432:5432
    restart: unless-stopped
volumes:
  pgdata:

转换之后

运行docker compose config检查文件,并查看填入默认值后的内容,然后运行docker compose up -d启动程序。固定镜像版本,例如使用postgres:16而不是latest,这样重启时就不会意外升级数据库。

要以其他格式读取文件,可以使用YAML转JSON进行转换;要安排容器中的定时任务,请查看cron说明,其中介绍了cron表达式。

卷和数据

名为pgdata的卷由Docker管理,即使运行docker compose down也会保留;而./data这样的路径对应主机上的文件夹。在使用会删除卷的docker compose down -v之前,请先备份命名卷。

使用方法

  1. 粘贴一个或多个docker run命令;使用反斜杠进行换行也可以。
  2. 查看生成的compose.yaml,以及无法转换的选项。
  3. 复制或下载结果,或切换方向,将Compose文件转换为docker run命令。

隐私与限制

所有操作都在浏览器中运行;你的命令可能包含密码,但不会上传。

相关工具

常见问题

为什么要使用Compose,而不是docker run?

Compose文件可以将完整设置记录在一个地方,便于阅读、版本管理,并可使用docker compose up启动,而不必将很长的命令保存在Shell历史记录中。它还可以同时启动多个容器及其网络和卷。

--rm和-d会如何处理?

Compose没有--rm;容器可通过docker compose down删除。-d是在运行docker compose up -d时选择的,因此不会写入文件。

为什么网络会标记为external?

docker run --network使用的是已存在的网络,因此转换后的文件会以相同方式引用该网络。如果希望由Compose自行创建网络,请删除external: true。

应该把密码保存在文件中吗?

对于密码和密钥,建议使用不纳入版本控制的env_file,或使用Docker secrets。转换器会保留命令中的原有内容,因此在提交文件前,请检查environment部分。

免费工具·使用在浏览器中次·无需账户