10.Docker之CMD指令
通過docker run 創建並啟動一個容器時,命令的最後可以指定容器啟動後在容器內立即要執行的指令,如:docker run -i -t image /bin/bash,表示容器啟動時立即在容器內打開一個shell偽終端。
除了這種方式我們完全可以在dockerfile文件中通過CMD指令指定容器啟動時要執行的命令。
首先,編寫一個簡單的dockfile,以centos為基礎鏡像:
#Base image FROM centos #MAINTAINER,this dockerfile creater MAINTAINER [email protected] #使用CMD指令 CMD ["/bin/bash"]
其次,我們根據該dockerfile構建一個鏡像:
接著,我們查看構建的鏡像:
最後,來體驗下CMD的作用:
1.上面dockerfile文件中最後一行CMD指令的參數是指定容器啟動時要執行的命令,這裏設置為bin/bash命令,當我們使用docker run -i -t 鏡像 /bin/bash命令交互,是在新容器內指定一個偽終端或終端,最後會幫我們將這個新容器生成出來;這時由於我們在CMD指定了/bin/bash,所以當我們本該執行docker run -i -t 鏡像 /bin/bash命令來進行交互時,可以省略 /bin/bash,即我們只需要鍵入docker run -i -t 鏡像即可:
再來查看幫我們生成的容器是否跟上方箭頭指向的容器ID一致:
通過對比,是一致的!
2.就算dockerfile中有CMD指令,我們仍然可以在docker run命令中帶上容器啟動時執行的命令,這會覆蓋dockerfile中的CMD指令指定的命令。
例如:docker run -i -t images /bin/ps(這裏我們指定查看進程命令,就是為了無法打開交互式shell界面,以此來測試dockerfile內的CMD命令是否被覆蓋)
3.在dockerfile中,可以有多條CMD命令,但多條CMD命令並不會都有效,以最後一條CMD命令為主
4.CMD命令的參數格式,一般建議編寫為字符串數組的方式,如:
CMD ["echo","dockerfile.cmd"]
10.Docker之CMD指令