Dockerfile中ENTRYPOINT 和 CMD的區別

1、dockerfile中的 CMDdocker

   一、每一個dockerfile中只能有一個CMD若是有多個那麼只執行最後一個。centos

   二、CMD 至關於啓動docker時候後面添加的參數看,舉個簡單例子:bash

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

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

      b、若是dockerfile中的CMD中有了CMD["/bin/bash","-c"],那麼就不用在執行的時候再添加了,若是添加了參數的話那麼就至關於要執行你添加的參數,默認的CMD中的參數就無效了。it

2、dockerfile中的ENTRYPOINTio

   一、一個dockerfile中ENTRYPOINT也只能存在一個,若存在多個那麼只執行最後一個,你能夠理解爲開機啓動的意思,和CMD有點像,不過仍是有區別。test

   二、舉個簡單例子:file

      a、dockerfile中有ENTRYPOINT ["tail","-f","/usr/local/aaa"]這句,那麼你啓動的時候鏡像就執行了這個裏面的內容,若是你像上面帶參數的話就至關於在這個執行的內容後面再加入參數,懂?im

      b、若是你和我同樣腦子不靈光的話我就再來舉個例子吧:

        若是咱們的dockerfile中有a中的這句話而後咱們啓動咱們的docker:

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

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

3、CMD和ENTRYPOINT結合

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

   二、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

   三、上面命令啓動後就至關於開機執行了tail -f /usr/local/aaa命令

相關文章
相關標籤/搜索