【轉(zhuǎn)】Dockerfile: ENTRYPOINT和CMD的區(qū)別

https://zhuanlan.zhihu.com/p/30555962

  • ENTRYPOINTCMD都是讓用戶指定一個(gè)可執(zhí)行程序

    • 這個(gè)可執(zhí)行程序在container啟動(dòng)后自動(dòng)啟動(dòng).
  • 如果你想讓自己制作的鏡像自動(dòng)運(yùn)行程序(不需要在docker run后面添加命令行指定運(yùn)行的命令) , 則必須在Dockerfile里面, 使用ENTRYPOINT或者CMD命令

    • 否則執(zhí)行運(yùn)行一個(gè)沒有調(diào)用ENTRYPOINT或者CMDdocker鏡像, 一定返回錯(cuò)誤

規(guī)則

覆蓋

  • 在寫Dockerfile時(shí), ENTRYPOINT或者CMD命令會(huì)自動(dòng)覆蓋之前的ENTRYPOINT或者CMD命令.

  • 我們也可以在命令行啟動(dòng)docker鏡像時(shí), 執(zhí)行其他命令行參數(shù), 覆蓋默認(rèn)的CMD

    • 如下,覆蓋命令為hostname
      docker run demo hostname
      
  • CMD類似, 默認(rèn)的ENTRYPOINTdocker run時(shí)也可以被覆蓋.

    • 在運(yùn)行時(shí), 用--entrypoint覆蓋默認(rèn)的ENTRYPOINT
      docker run --entrypoint
      

區(qū)別

  • 可見,用戶在執(zhí)行docker run的時(shí)候,CMD的默認(rèn)程序比ENTRYPOINT更容易被覆蓋

寫法(Shell vs. Exec)

  • ENTRYPOINTCMD指令都支持2種不同的寫法:
    • shell表示法和exec表示法

下面的例子使用了shell表示法:

CMD executable  param1 param2
  • 當(dāng)使用shell表示法時(shí), 命令行程序作為sh程序子程序運(yùn)行(docker/bin/sh -c的語(yǔ)法調(diào)用命令行程序

  • 如果我們用docker ps命令查看運(yùn)行的docker, 就可以看出實(shí)際運(yùn)行的是/bin/sh -c命令

  • 雖然shell表示法看起來可以順利工作, 但是它其實(shí)上有一些小問題存在.

exec表示法:

CMD ["executable","param1","param2"] 
  • 它沒有shell的表示法的缺點(diǎn)

ENTRYPOINT 和 CMD 組合使用

  • 在某種情況下, 組合ENTRYPOINTCMD能發(fā)揮更大的作用

  • ENTRYPOINT指定默認(rèn)的運(yùn)行命令, CMD指定默認(rèn)的運(yùn)行參數(shù).

    • ENTRYPOINTCMD同時(shí)存在時(shí), docker會(huì)把CMD的命令拼接到ENTRYPOINT命令之后

例子

FROM ubuntu:trusty
ENTRYPOINT ["/bin/ping","-c","3"]
CMD ["localhost"] 
  • 這里docker最終運(yùn)行的命令是:ping -c 3 localhost
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡(jiǎn)介 Docke...
    極客圈閱讀 10,771評(píng)論 0 120
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,737評(píng)論 0 5
  • 文/王吳陽(yáng) 你們知道嗎?我有一個(gè)像猛虎一樣的弟弟,他身上的故事有:《三打王吳陽(yáng)》《棒打王吳陽(yáng)...
    我愛無花果閱讀 279評(píng)論 2 2
  • 早上出外去跑步,昨晚下雨今早晴,仰望上空白白天,風(fēng)吹云散好涼快,花瓣飄落滿天飛,樹木穿上新衣服,花草叢林綠油油,,...
    榮蘭_a5f9閱讀 136評(píng)論 0 0

友情鏈接更多精彩內(nèi)容