您好,登錄后才能下訂單哦!
本篇內容介紹了“CMD和ENTRYPOINT怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
CMD指令有三種形式:
CMD ["executable","param1","param2"]
(exec形式,這是優先形式)
CMD ["param1","param2"]
(作為ENTRYPOINT的默認參數)
CMD command param1 param2
(shell 形式)
Dockerfile中只能有一條CMD指令。如果存在多個CMD,那么只有最后一個CMD才會生效。
CMD的主要目的是為正在執行的容器提供默認值。這些默認值可以包括可執行文件,也可以省略可執行文件。省略可執行文件時必須指定ENTRYPOINT指令。
備注:如果CMD用于為ENTRYPOINT指令提供默認參數,則CMD和ENTRYPOINT指令都應該使用JSON數組格式指定。
備注:exec形式會被解析為JSON數組,這意味著必須對單詞使用雙引號,而不是單引號。
備注:與shell形式不同,exec形式不調用命令shell。這意味著正常的shell處理不會生效。例如,CMD ["echo", "$HOME"]不會對$HOME執行變量替換。如果想要shell處理生效,要么使用shell形式,要么直接執行shell,例如:CMD [ "sh", "-c", "echo $HOME" ]。當使用exec形式并直接執行shell時,就像shell形式一樣,執行環境變量擴展的是shell,而不是docker。
在使用shell或exec格式時,CMD設置了運行鏡像時要執行的命令。
如果使用CMD的shell形式,那么<命令>將在/bin/sh -c中執行:
FROM ubuntu CMD echo "This is a test." | wc -
如果不想在shell的形式下運行<command>,那么必須將該命令表示為JSON數組,并給出可執行文件的完整路徑。建議優先使用CMD命令的數組形式。任何額外的參數必須單獨表示為數組中的字符串:
FROM ubuntu CMD ["/usr/bin/wc","--help"]
如果希望容器每次運行相同的可執行文件,那么應該考慮將ENTRYPOINT與CMD結合使用。
如果用戶指定docker run的參數,那么CMD中指定的默認值將被run的參數覆蓋。
備注:不要將RUN與CMD混淆。RUN實際運行一個命令并提交結果;CMD在構建時不執行任何操作,但為鏡像指定預期的命令。
ENTRYPOINT有兩種形式:
ENTRYPOINT ["executable", "param1", "param2"]
(exec 形式,這是優先形式)
ENTRYPOINT command param1 param2
(shell 形式)
ENTRYPOINT允許您配置將作為可執行文件運行的容器。
“CMD和ENTRYPOINT怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。