博客 / 詳情

返回

Dockerfile 中 ENTRYPOINT 和 CMD 有什麼區別 ?

Difference between ENTRYPOINT and CMD in Dockerfile

Docker 徹底改變了容器化的世界,開發人員更容易管理和部署應用程序。Dockerfiles 是構建和理解容器鏡像的關鍵組件,理解 Dockerfiles 中指令的區別是很有必要的。

在在本文中,我們將探討 Dockerfile 中的 ENTRYPOINT 和 CMD 指令的用法,以及它們是如何交互的。

1. ENTRYPOINT 介紹

ENTRYPOINT 指令用於指定容器啓動時默認可執行文件或命令。

基本語法:

ENTRYPOINT ["executable", "param1", "param2"]

或者

ENTRYPOINT command param1 param2

2. CMD 介紹

CMD 指令用於為 ENTRYPOINT 指令 提供默認參數或定義一個默認命令,如果沒有指定 ENTRYPOINT 指令,該命令將被執行。不像 ENTRYPOINT,CMD 沒有定義容器的主要用途,相反,它提供了一個可以輕鬆覆蓋的默認行為。

基本語法:

CMD ["executable", "param1", "param2"]

或者

CMD command param1 param2

3. ENTRYPOINT 和 CMD 區別

Purpose

ENTRYPOINT 用於定義容器的主要目的,而 CMD 提供了可以覆蓋的默認行為。

Overriding

當運行一個容器時,可以通過提供額外的命令行參數輕鬆覆蓋 CMD 指令,而 ENTRYPOINT 指令不能被重寫,除非使用 -entrypoint 選項顯式指定。

Interaction

如果 Dockerfile 同時指定 ENTRYPOINT 和 CMD 指令,CMD 為 ENTRYPOINT 指令參數提供默認值。

4. 結合 ENTRYPOINT 和 CMD

通過在 Dockerfile 中同時使用 ENTRYPOINT 和 CMD,您可以靈活的創建容器鏡像,同時具有明確的定義和可定製的行為。ENTRYPOINT 指令指定要執行的默認命令, CMD 指令提供該命令的默認參數。

FROM ubuntu:latest
ENTRYPOINT ["/bin/ping"]
CMD ["localhost"]

在本例中,ENTRYPOINT 指令指定容器應該執行 ping 命令,CMD 指令提供默認參數“ localhost ”。如果運行容器時沒有附加參數,它將執行 ping localhost 命令。

我的開源項目

酷瓜雲課堂-在線教育解決方案

  • course-tencent-cloud(酷瓜雲課堂 - gitee倉庫)
  • course-tencent-cloud(酷瓜雲課堂 - github倉庫)
user avatar leo_su 頭像 tfzh 頭像 jiongmefeishi 頭像 xuxiaocong_5e947e5ce588a 頭像 chigeshitou 頭像
5 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.