您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Dockerfile中CMD與ENTRYPOINT的區別有哪些”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Dockerfile中CMD與ENTRYPOINT的區別有哪些”這篇文章吧。
#CMD與ENTRYPOINT在何時作用? CMD與ENTRYPOINT都是在使用docker run指令將image初始化為container后運行的第一個指令。
#CMD與ENTRYPOINT的格式
ENTRYPOINT ["executable", "param1", "param2"] (exec form, preferred)
ENTRYPOINT command param1 param2 (shell form)
CMD ["executable","param1","param2"] (exec form, this is the preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (shell form)
官網的CMD指令格式說明有三種,我看來只有兩種(下面解釋):
CMD ["executable","param1","param2"] (exec form)
CMD command param1 param2 (shell form)
#當CMD與ENTRYPOINT一起使用時
CMD (exec form) Dockerfile
FROM ubuntu:15.04 CMD ["echo", "hello cmd"] ENTRYPOINT ["echo","hello entry"]
docker run 結果
hello entry echo hello cmd
CMD (shell form) Dockerfile
FROM ubuntu:15.04 CMD echo "hello cmd" ENTRYPOINT ["echo","hello entry"]
docker run 結果
hello entry /bin/sh -c echo "hello cmd"
docker并不會根據CMD(exec form)里的內容判斷CMD是第一種還是第二種格式,而是根據Dockerfile文件中是否存在ENTRYPOINT指令來區分的,我不認為應該根據外界條件來區分格式,所以我的看法CMD指令只有兩種格式
#CMD與ENTRYPOINT如何執行 exec form指令使用exec命令運行(從官網介紹看出)
shell form指令使用/bin/sh -c 命令運行(從上面docker run的結果可以看出)
#CMD與ENTRYPOINT的區別 在docker run 指令中是加參數A,如果Dockerfile中只有CMD指令沒有ENTRYPOINT,則執行 /bin/sh -c A 如果Dockerfile中有ENTRYPOINT則舍棄CMD指令的內容將A傳遞給ENTRYPOINT。 A:可以是一個參數或多個參數
以上是“Dockerfile中CMD與ENTRYPOINT的區別有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。