Dockerfile中ENTRYPOINT 和 CMD的區別


一、dockerfile中的 CMD

   1、每個dockerfile中只能有一個CMD如果有多個那么只執行最后一個。

   2、CMD 相當於啟動docker時候后面添加的參數看,舉個簡單例子:

      docker run -itd --name wohaoshuai docker_image(這個是鏡像名稱) /bin/bash -c.

      a、鏡像名稱后面跟了一個/bin/bash -c ,其實等價於在dockerfile中的CMD ["/bin/bash","-c"],懂了吧。

      b、如果dockerfile中的CMD中有了CMD["/bin/bash","-c"],那么就不用在執行的時候再添加了,如果添加了參數的話那么就相當於要執行你添加的參數,默認的CMD中的參數就無效了。

二、dockerfile中的ENTRYPOINT

   1、一個dockerfile中ENTRYPOINT也只能存在一個,若存在多個那么只執行最后一個,你可以理解為開機啟動的意思,和CMD有點像,不過還是有區別。

   2、舉個簡單例子:

      a、dockerfile中有ENTRYPOINT ["tail","-f","/usr/local/aaa"]這句,那么你啟動的時候鏡像就執行了這個里面的內容,如果你像上面帶參數的話就相當於在這個執行的內容后面再加入參數,懂?

      b、如果你和我一樣腦子不靈光的話我就再來舉個例子吧:

        如果我們的dockerfile中有a中的這句話然后我們啟動我們的docker:

          docker run -itd --name wohaoshuai docker_image(這個是鏡像名稱) /bin/bash -c。

        此時就相當於我們啟動docker的時候執行了:tail -f /usr/local/aaa /bin/bash -c,這個命令明顯就不對嘛,你見過這么牛逼的命令啊?

三、CMD和ENTRYPOINT結合

   1、綜合一和二我們可以來搞一個正常的CMD與ENTRYPOINT的組合命令嘛,看哥來給你秀一把。

   2、dockerfile 內容如下:     

    FROM daocloud.io/centos:latest

    ADD aaa /usr/local/aaa

    CMD ["-f","/usr/local/aaa"]
    ENTRYPOINT ["tail"]

    制作鏡像命令也給你說一下吧:docker build -t my/base  .(這兒有個小點)

    啟動命令也給你說一下吧:docker run -itd --name wohaoshuai my/base

   3、上面命令啟動后就相當於開機執行了tail -f /usr/local/aaa命令

 


免責聲明!

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



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