Utilo

docker run ↔ Compose 转换

把 docker run 命令转换成 docker-compose / compose.yaml 服务,包括端口、环境变量、卷、网络、健康检查和资源限制,也可以把 compose 服务转回 docker run。

这个转换器的作用

一个从快速实验开始的 docker run 命令往往会增长:端口,音量,环境变量,网络,重启策略。在某个时刻,它属于compose.yaml。这个转换器解析一个或多个 docker run 命令,并产生一个清洁的 Compose 文件,每个命令有一个服务。它还可以逆向运行:粘贴一个Compose文件并获取相应的docker run命令,这对于调试单个服务或在没有Compose的主机上运行它非常方便。解析发生在浏览器中。

使用方法

  1. 选择 docker运行 → 编译或 编译 → docker运行。
  2. 粘贴你的命令,每行一个。逆击线的延续是好的,领先的sudo被忽略了。
  3. 检查生成的YAML。命名的卷和自定义网络在顶层自动声明。
  4. 阅读没有Compose等价的选项的注释。
  5. 复制输出,保存为compose.yaml并运行docker compose up -d。

支持的选项

端口 (-p,--expose),环境 (-e,--env-file),体积和安装 (-v,--mount,--tmpfs),网络 (--network,--network-alias,--ip,--hostname,--add-host,--dns,--link),重启策略,用户和工作目录,入口点和命令,标签,日志驱动程序和选项,健康检查 (--health-*),资源限制 (--memory,--cpus,--shm-size,--ulimit,--gpus),安全选项 (--privileged,--cap-add,--cap-drop,--security-opt,--read-only),设备,sysctls,--init,--platform,--pull,-it等。

提示

  • 服务名称来自 --name;如果没有,则使用图像名称。
  • --rm 和 -d 在 Compose 中没有任何意义,并且被放下了音符。
  • 构建中的相对绑定 mounts 与构建文件相对解决,而不是你的 shell 的目录。使用./data式路径。
  • 通过-e传递的秘密最终是纯文本。考虑将它们转移到.env文件,并引用${VAR}。

常见问题

创建了哪个 Compose 版本?

输出遵循Docker Compose v2所使用的当前Compose规范。已经过时的顶级version:密钥被省略。

我可以同时转换几个容器吗?

没有。粘贴多个 docker run 命令,每个命令都会成为同一文件中的服务,

构建 → 运行支持构建部分吗?

build:没有 docker run 的等效,所以工具使用图像名称并添加一个提示,

我的命令上传了吗?

没有。转换完全是在浏览器中完成的。

安全。所有处理都通过 JavaScript、Web Worker 和浏览器 API 在本地完成,你输入、粘贴或上传的任何内容都不会发送到我们的服务器。

本页内容由英文自动翻译而来,如发现错误,欢迎告诉我们。