使用步驟
- 在左側貼上 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" 會得到完整的值。
隱私說明
本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。