跳到正文
馬克工具箱

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 網路名。

資料會上傳嗎?

不會。解析和轉換都在瀏覽器中完成。

隱私說明

本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。

相關工具