簡化 docker 指令輸入步驟

工作上有測試的開發工具程式碼,透過 docker 安裝網站伺服器,但是每次啟動網站伺服器需要輸入很多 docker 指令。以下說明如何簡化輸入指令,同時避免出錯。

Docker icon by Icons8


問題狀況

原本需要輸入的 docker 指令包含:

  • 列出停止的容器 (container),輸入
    • docker ps -a
  • 取得容器 ID,以下用 container-id 表示
  • 啟動停止的容器,輸入
    • docker start container-id
  • 進入容器內的命令列 (docker bash),輸入
    • docker exec -it container-id bash
  • 切換到 Flask 所在目錄,輸入
    • cd /path/to/flask_server/
  • 啟動 Flask 網站伺服器,輸入
    • python FlaskServer.py
需要輸入的指令非常多,而且取得 container-id 過程中還需要留意避免複製錯誤。對於不熟悉命令列操作的使用者的痛苦指數可以想像。

解決方式

  1. 原本要透過 docker ps 取得容器 ID 的步驟,可以透過自訂容器名稱減少查詢步驟。輸入 
    • docker rename container-id 容器名稱
  2. 啟動停止的容器,並進入容器內的命令列兩個步驟,可以改成輸入 
    • docker start 容器名稱 && docker exec -it 容器名稱 /bin/bash
  3. BASH 執行多個指令,可以使用 bash -c "多個指令" 選項。不同指令可以用 ; 或 && 符號間隔。使用 && 符號間隔的差別是,如果指令 1 回傳錯誤,就不會執行指令 2 。
    • bash -c "指令1; 指令2" 
    • 或 bash -c "指令1 && 指令2" 
  4. 原本需要多個步驟逐筆輸入的指令,可以簡化成
docker start 容器名稱 && docker exec -it 容器名稱 /bin/bash -c "cd /path/to/flask_server/ && python Flask_Server.py" 

參考資料




留言