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會員
31內容數
以工程師視角拆解技術與生活的連結。專長 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
覺得黏在額頭上的"條碼瀏海"很阿雜嗎?日本熱銷的「KOIZUMI迷你瀏海梳」,不僅小巧便攜,更能快速加熱造型,無論是齊瀏海、空氣瀏海還是韓系碎蓋髮,都能輕鬆打理!瀏海順了,一整天心情就好了!
Thumbnail
覺得黏在額頭上的"條碼瀏海"很阿雜嗎?日本熱銷的「KOIZUMI迷你瀏海梳」,不僅小巧便攜,更能快速加熱造型,無論是齊瀏海、空氣瀏海還是韓系碎蓋髮,都能輕鬆打理!瀏海順了,一整天心情就好了!
Thumbnail
走完朝聖之路和TMB後,我發現真正能撐住長時間健行的,不只是腳力,而是那些讓生活更舒服的小物。這篇整理了我在TMB實測後覺得超好用的三樣登山神器——防水襪、肥皂袋、速乾毛巾,每一樣都讓旅程更輕鬆!
Thumbnail
走完朝聖之路和TMB後,我發現真正能撐住長時間健行的,不只是腳力,而是那些讓生活更舒服的小物。這篇整理了我在TMB實測後覺得超好用的三樣登山神器——防水襪、肥皂袋、速乾毛巾,每一樣都讓旅程更輕鬆!
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 佈署流程 首先看到如下圖上半部,在我們一個完整的佈署流程,我們會先將我
Thumbnail
前言 大家好在先前我們講了什麼是 Docker,Docker 好處有什麼以及怎麼安裝 Docker,今天我們要來開始初體驗 Docker 容器,使用後您會發現 Docker 非常的方便快速 Docker Hub 介紹 首先在開始學怎麼抓取 Docker Image 之前,我們要先來介紹 Doc
Thumbnail
前言 大家好在先前我們講了什麼是 Docker,Docker 好處有什麼以及怎麼安裝 Docker,今天我們要來開始初體驗 Docker 容器,使用後您會發現 Docker 非常的方便快速 Docker Hub 介紹 首先在開始學怎麼抓取 Docker Image 之前,我們要先來介紹 Doc
Thumbnail
前言 上次我們講到 Docker 的功用與好處,今天我們要在講解,如何安裝 Docker 這個容器,讓我們在之後的教學應用更好的實作與練習,現在讓我們開始吧 Docker Engine 與 Docker Desktop 首先在講解怎麼安裝 Docker 時,我們先講解 Docker Engin
Thumbnail
前言 上次我們講到 Docker 的功用與好處,今天我們要在講解,如何安裝 Docker 這個容器,讓我們在之後的教學應用更好的實作與練習,現在讓我們開始吧 Docker Engine 與 Docker Desktop 首先在講解怎麼安裝 Docker 時,我們先講解 Docker Engin
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
Thumbnail
前言 上次我們針對 Docker 這樣容器化技術做了一點介紹,今天我們要來講解 Docker 架構,你是否發現在每次程式上伺服器的流程很麻煩呢 ? 是否發現你寫的程式在別的作業系統不能用呢 ? 如果你遇到這些問題,Docker 都可以幫助你解決這些問題 Docker 架構 在 Docker 這
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News