1. 程式人生 > >10.Docker之CMD指令

10.Docker之CMD指令

無法打開 ID reat 例如 echo 數組 code 一行 打開

通過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指令