Docker CMD 與 ENTRYPOINT:哪個會先被執行?一份簡單的比較指南

更新 發佈閱讀 3 分鐘

簡介

Dockerfile 裡的 CMDENTRYPOINT 都能設定容器啟動時要執行的指令。
但很多人分不清「誰先誰後」、「哪個會被覆蓋」? 這篇文章用最簡單的例子帶你搞懂。

一、CMD 是什麼?

CMD 用來設定容器預設執行的命令
如果在執行容器時有額外指定命令,CMD 會被覆蓋。
範例:

FROM ubuntu
CMD ["echo", "Hello from CMD"]

執行:

docker run myimage
# 輸出:Hello from CMD

但如果你執行:

docker run myimage echo "Hi"
# 輸出:Hi

CMD 被你覆蓋了。

二、ENTRYPOINT 是什麼?

ENTRYPOINT 代表容器啟動時一定會執行的主命令
即使你在 docker run 時加了參數,也只是「附加」到它後面。
範例:

FROM ubuntu
ENTRYPOINT ["echo", "Hello"]

執行:

docker run myimage world
# 輸出:Hello world

這裡的 world 是傳給 ENTRYPOINT 的參數。

三、CMD + ENTRYPOINT 一起用

它們可以搭配使用,常見寫法如下:

FROM ubuntu
ENTRYPOINT ["echo"]
CMD ["Hello world"]

執行:

docker run myimage
# 輸出:Hello world

執行:

docker run myimage Bye
# 輸出:Bye

解釋:

  • ENTRYPOINT 固定主命令。
  • CMD 提供預設參數(可被覆蓋)。

四、Shell form vs Exec form 的搭配要注意

ENTRYPOINTCMD 都可以用 Shell form 或 Exec form。
但在正式環境建議:

ENTRYPOINT ["python", "app.py"]
CMD ["--port", "8080"]

這樣訊號傳遞會正確。
如果用 Shell form 反而會吃掉訊號。

五、CMD 與 ENTRYPOINT 的核心差異

可以這樣想:

  • ENTRYPOINT:主程式(這個容器要「做什麼」)
  • CMD:預設參數(這個程式「怎麼做」)
raw-image

結語

簡單來說:

  • CMD 是「預設要做什麼
  • ENTRYPOINT 是「一定要做什麼

搭配得好,能讓你的 Dockerfile 更靈活又專業。
下次寫 Dockerfile,不妨試著組合這兩者,讓容器啟動行為完全符合你的設計。


留言
avatar-img
留言分享你的想法!
avatar-img
小猴工程師
2會員
29內容數
以工程師視角拆解技術與生活的連結。專長 DevOps、AI 與區塊鏈,把艱深的技術轉化為易懂的故事。 文章主題橫跨技術筆記、實作教學與個人經驗分享。 寫作理念:讓每個想靠技術改變生活的人,都能在這裡找到啟發。
小猴工程師的其他內容
2025/10/17
Docker 儼然已成為軟體開發與部署的標準工具。而 Dockerfile 作為自動化建構映像檔的關鍵腳本,更是不可或缺。本文將帶你深入瞭解 Dockerfile 的基本結構、常用指令,並透過實際範例,從零開始建構一個 Node.js 應用映像檔,讓你輕鬆掌握環境部署的自動化流程。
Thumbnail
2025/10/17
Docker 儼然已成為軟體開發與部署的標準工具。而 Dockerfile 作為自動化建構映像檔的關鍵腳本,更是不可或缺。本文將帶你深入瞭解 Dockerfile 的基本結構、常用指令,並透過實際範例,從零開始建構一個 Node.js 應用映像檔,讓你輕鬆掌握環境部署的自動化流程。
Thumbnail
2025/10/14
路由器和交換器在建立網路時都扮演著關鍵角色,但功能截然不同。本文將深入解析兩者的職責、如何正確連接,以及在何種情況下需要額外添購交換器,幫助您打造更穩定、安全的家庭或辦公室網路。
Thumbnail
2025/10/14
路由器和交換器在建立網路時都扮演著關鍵角色,但功能截然不同。本文將深入解析兩者的職責、如何正確連接,以及在何種情況下需要額外添購交換器,幫助您打造更穩定、安全的家庭或辦公室網路。
Thumbnail
2025/09/12
Elasticsearch 的 index 會隨著時間變大,導致查詢變慢、儲存成本升高。ILM (Index Lifecycle Management) 可以自動化: Index 的 rollover(建立新 index) Index 的 刪除(清理舊資料) Index 的 轉冷 / 凍結(降
2025/09/12
Elasticsearch 的 index 會隨著時間變大,導致查詢變慢、儲存成本升高。ILM (Index Lifecycle Management) 可以自動化: Index 的 rollover(建立新 index) Index 的 刪除(清理舊資料) Index 的 轉冷 / 凍結(降
看更多
你可能也想看
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
Docker-Compose負責對container做快速編排。設定檔預設名稱為docker-compose.yml,在檔案中,可以透過COMPOSE_FILE或-f對設定進行定義。 想要將專案透過Docker-Compose部署,需要創建docker-compose.yml和Dockerfile
Thumbnail
Docker-Compose負責對container做快速編排。設定檔預設名稱為docker-compose.yml,在檔案中,可以透過COMPOSE_FILE或-f對設定進行定義。 想要將專案透過Docker-Compose部署,需要創建docker-compose.yml和Dockerfile
Thumbnail
獲取Image docker pull 查看Image docker images 可以查看REPOSITORY、TAG、IMAGE ID、CREATED與SIZE。 創建Image docker build [OPTIONS] PATH | URL | - 上傳Imag
Thumbnail
獲取Image docker pull 查看Image docker images 可以查看REPOSITORY、TAG、IMAGE ID、CREATED與SIZE。 創建Image docker build [OPTIONS] PATH | URL | - 上傳Imag
Thumbnail
前端 為了實驗我們上傳的 Docker Image 有沒有問題,我們先在學一個刪除本地 Docker Image,刪除 Docker Image 要使用 docker rmi <image> 這個語法,現在開始刪除本地 Docker Image 輸入以下指令 docker rmi timmmmm
Thumbnail
前端 為了實驗我們上傳的 Docker Image 有沒有問題,我們先在學一個刪除本地 Docker Image,刪除 Docker Image 要使用 docker rmi <image> 這個語法,現在開始刪除本地 Docker Image 輸入以下指令 docker rmi timmmmm
Thumbnail
前言 大家好上次我們教了如何建立自己的 Docker Image,今天我們要來教怎麼把自己做好的 Docker Image 上傳到 Docker Hub,如果以後自己在公司有搭建 Docker Registry,也可以用同樣方式上傳到公司的 Docker Registry 私有倉庫 登入 Doc
Thumbnail
前言 大家好上次我們教了如何建立自己的 Docker Image,今天我們要來教怎麼把自己做好的 Docker Image 上傳到 Docker Hub,如果以後自己在公司有搭建 Docker Registry,也可以用同樣方式上傳到公司的 Docker Registry 私有倉庫 登入 Doc
Thumbnail
前言 大家好上次我們教了如何下載 Docker Image 使用,今天我們要教如何產出自己的 Image,這次會使用一個 Dockerfile 範例,自行打包 Docker Image,初步練習使用 Docker 指令 下載 Dockerfile 教學檔案 在這裡我已經幫忙寫好一個 Docke
Thumbnail
前言 大家好上次我們教了如何下載 Docker Image 使用,今天我們要教如何產出自己的 Image,這次會使用一個 Dockerfile 範例,自行打包 Docker Image,初步練習使用 Docker 指令 下載 Dockerfile 教學檔案 在這裡我已經幫忙寫好一個 Docke
Thumbnail
前言 上次講到 Dockerfile、DockerImage、Docker Container 他們之間的關係,今天我們要來熟悉 Docker Image 如何使用,教你如何抓取雲端上的 Docker Image, Docker Image 下載來源 當我們今天要要使用 Docker Imag
Thumbnail
前言 上次講到 Dockerfile、DockerImage、Docker Container 他們之間的關係,今天我們要來熟悉 Docker Image 如何使用,教你如何抓取雲端上的 Docker Image, Docker Image 下載來源 當我們今天要要使用 Docker Imag
Thumbnail
前言 上次我們初步體驗 Docker 快速佈署能力,今天我們要來講解 Dockerfile、Docker Image 與 Docker Container 這些常見的名詞,我們來了解在我們佈署的時候做哪些事情 Docker 佈署流程 首先看到如下圖上半部,在我們一個完整的佈署流程,我們會先將我
Thumbnail
前言 上次我們初步體驗 Docker 快速佈署能力,今天我們要來講解 Dockerfile、Docker Image 與 Docker Container 這些常見的名詞,我們來了解在我們佈署的時候做哪些事情 Docker 佈署流程 首先看到如下圖上半部,在我們一個完整的佈署流程,我們會先將我
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News