發表文章

目前顯示的是 5月, 2025的文章

04 - Commands and Arguments

圖片
CMD vs ENTRYPOINT 差異比較 CMD 是什麼? CMD 用來指定 預設要執行的命令或參數 。 如果你在執行容器時提供了命令或參數,那麼 CMD 的內容會被 覆蓋掉 。 通常搭配 ENTRYPOINT 使用,用來提供預設參數。 範例: ``` CMD ["echo", "Hello from CMD"] ``` 執行: ``` docker run myimage # 輸出:Hello from CMD docker run myimage echo "我自訂的訊息" # 輸出:我自訂的訊息(CMD 被覆蓋) ``` ENTRYPOINT 是什麼? ENTRYPOINT 用來定義容器啟動時 一定會執行的主命令 。 不會被 docker run 的參數覆蓋 (除非你用 --entrypoint 明確指定)。 適合讓容器專注執行某個固定的程式或腳本。 範例: ``` ENTRYPOINT ["echo"] ``` 執行: ``` docker run myimage "來自 ENTRYPOINT" # 輸出:來自 ENTRYPOINT ``` CMD + ENTRYPOINT 一起使用 當你同時使用這兩個指令時: ENTRYPOINT 是 主命令 (command) CMD 是 預設參數 (arguments) 範例: ``` ENTRYPOINT ["echo"] CMD ["Hello from CMD"] ``` 執行: ``` docker run myimage # 輸出:Hello from CMD docker run myimage "嗨!" # 輸出:嗨!(CMD 被自訂參數取代) ``` 總結比較表