Dockerfile 中 ENTRYPOINT 與 CMD 的區別

Dockerfile 有兩個啟動配置, CMD 和 ENTRYPOINT , 可以在 Dockerfile 中來配置容器啟動時自動執行的命令, 但是這二者有什么區別呢, 接下來總結如下:

首先來看一下 CMD , 有三種格式的配置, 分別是:

  • CMD [“executable”,“param1”,“param2”] (exec 格式, 推薦的格式)
  • CMD [“param1”,“param2”] (作為 ENTRYPOINT 的默認參數)
  • CMD command param1 param2 (shell 格式)

在使用時, 要注意一下問題:

  1. 包含可執行文件時, 為容器指定默認執行命令, 這個是主要用途;
  2. 不包含可執行文件時, 必須提供 ENTRYPOINT 配置, CMD 作為默認參數;
  3. Dockerfile 中只能有一個 CMD 起效, 如果出現了多個, 則最后一個起效;

而 ENTRYPOINT , 有兩種格式的配置, 分別是:

  • ENTRYPOINT [“executable”, “param1”, “param2”] (exec 格式, 推薦)
  • ENTRYPOINT command param1 param2 (shell 格式)

CMD 和 ENTRYPOINT 兩種配置格式的區別是:

  • exec 格式 推薦這種格式, 使用這種模式時, 可以不需要 shell 進程, 讓 Docker 應用的可執行程序成為容器的 PID 1 進程, 可以接收 Unix 信號, 比如執行 docker stop <container style="box-sizing: border-box;">時能夠接收到 SIGTERM。</container>

  • shell 格式 會始終調用一個 shell 進程, 成為 /bin/sh -c 的子命令, 可執行程序不能響應 Unix 信號。

注意: ENTRYPOINT 使用 shell 格式 時, 會忽略 CMD 和 run 傳入的參數, 如果要替換默認的 ENTRYPOINT 命令, 則需要在執行 docker run 的時候指定 --entrypoint 參數。

當 CMD 和 ENTRYPOINT 的使用總結如下:

在 Dockerfile 中, 應該至少指定一個 CMD 和 ENTRYPOINT;
將 Docker 當作可執行程序時, 應該使用 ENTRYPOINT 進行配置;
CMD 可以用作 ENTRYPOINT 默認參數, 或者用作 Docker 的默認命令;
CMD 可以被 docker run 傳入的參數覆蓋;
docker run 傳入的參數會附加到 ENTRYPOINT 之后, 前提是使用了 exec 格式 。

最后我們來看一個實例:

ENTRYPOINT 使用 exec 格式, ENTRYPOINT 中的參數始終會被使用,而 CMD 的額外參數可以在容器啟動時動態替換掉。

比如下面的 Dockerfile 片段:


image.png

當容器通過 docker run -it [image] 啟動時,輸出為:

image.png

而如果通過 docker run -it [image] CloudMan 啟動,則輸出為:

image.png

參考文檔

http://www.google.com
http://t.cn/Rn2s509
http://t.cn/Rn2s7gM

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 夜深了,我卻久久不能入睡,因為我在思念著你,也在擔心著你,擔心你是否睡得安穩,擔心你是否玩得開心,是否安全無疑 從...
    Tender丶Lea閱讀 244評論 0 1
  • “后悔”,這個詞好像已經很久沒有聽到過了,都不知道后悔長成什么樣子。 昨天朋友問:“離開以前的公司,你后悔嗎?”都...
    小鹿莊園zhlu閱讀 193評論 0 0
  • 男神偶像最近有一首現場的演出歌曲,林禾巴巴的推薦給好友岳南聽,并全神貫注看她聽歌的表情。 岳南聽完淡淡的說還可以。...
    fcf4e1974294閱讀 274評論 0 1
  • 光陰吐絲,網住了生活 直到,眸子日趨暗淡了光澤 不能仰望星空 無法暢飲春風 十八歲,送我一匹野馬 讓我騎到三十八,...
    長夏漫歌閱讀 279評論 0 2
  • 打架,偷錢,玩螞蟻,點火,逃學沒有干過正經事。 我媽沒少揍我。但,我擁有很多“狐朋狗友”陪著我度過。 否則,沒有電...
    Aoru閱讀 238評論 0 1