docker學習筆記12:Dockerfile 指令 ENTRYPOINT介紹


本文介紹Dockerfile的 ENTRYPOINT指令的含義。

先回顧下CMD指令的含義,CMD指令可以指定容器啟動時要執行的命令,但它可以被docker run命令的參數覆蓋掉。

ENTRYPOINT 指令和CMD類似,它也可用戶指定容器啟動時要執行的命令,但如果dockerfile中也有CMD指令,CMD中的參數會被附加到ENTRYPOINT 指令的后面。 如果這時docker run命令帶了參數,這個參數會覆蓋掉CMD指令的參數,並也會附加到ENTRYPOINT 指令的后面。

這樣當容器啟動后,會執行ENTRYPOINT 指令的參數部分。

可以看出,相對來說ENTRYPOINT指令優先級更高。

我們來看個例子,下面是Dockerfile的內容

#test
FROM ubuntu
MAINTAINER hello
RUN echo hello1 > test1.txt
RUN echo hello2 > /test2.txt
EXPOSE 80
ENTRYPOINT ["echo"]
CMD ["defaultvalue"]

假設通過該Dockerfile構建的鏡像名為 myimage。

 

1、當運行 docker run myimage  輸出的內容是 defaultvalue,可以看出CMD指令的參數得確是被添加到ENTRYPOINT指令的后面,然后被執行。


2、當運行docker run myimage hello world  輸出的內容是 hello world ,可以看出docker run命令的參數得確是被添加到ENTRYPOINT指令的后面,然后被執行,這時CMD指令被覆蓋了。

 

3、另外我們可以在docker run命令中通過 --entrypoint 覆蓋dockerfile文件中的ENTRYPOINT設置,如:

docker run --entrypoint="echo" myimage good  結果輸出good

 注意,不管是哪種方式,創建容器后,通過 dokcer ps查看容器信息時,COMMOND列會顯示最終生效的啟動命令。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM