目錄
- ENTRYPOINT 簡介
- CMD簡介
- 案例(下面基于centos這個基礎鏡像構建一個鏡像測試CMD命令)
- 案例(下面基于centos這個基礎鏡像構建一個鏡像測試ENTRYPOINT命令)
ENTRYPOINT 簡介
ENTRYPOINT 容器啟動后執行的命令,讓容器執行表現的像一個可執行程序一樣,與CMD 的 區 別 是 不 可 以 被 docker run 覆 蓋 , 會 把 docker run 后 面 的 參 數 當 作 傳 遞 給
ENTRYPOINT 指令的參數。
Dockerfile 中只能指定一個 ENTRYPOINT,如果指定了很多,只 有 最 后 一 個 有 效 。 docker run 命 令 的 -entrypoint 參 數 可 以 把 指 定 的 參 數 繼 續 傳 遞 給ENTRYPOINT
CMD簡介
案例(下面基于centos這個基礎鏡像構建一個鏡像測試CMD命令)
1)在/opt/dockerfile目錄下創建一個Dockerfile文件
#基于我們從阿里云下載下來的centos基礎鏡像 FROM centos CMD ["/bin/echo","this is test cmd"]
2)使用dockerfile構建鏡像
命令:docker build -f /opt/dockerfile/mydockerfile-test -t cmdtest:v1.0 .
3)啟動剛剛創建的鏡像
命令:docker run -it 鏡像id
可以看到,/bin/echo This is test cmd 這條命令成功執行.
直接進入container里面,而不執行echo指令,可以在docker run 后面直接加上/bin/bash命令,/bin/bash命令會覆蓋掉cmd后面的命令。
/bin/bash 命令覆蓋掉了dockerfile中的cmd命令,直接進入到了container中。
案例(下面基于centos這個基礎鏡像構建一個鏡像測試ENTRYPOINT命令)
1)在/opt/dockerfile目錄下創建一個Dockerfile文件
#基于我們從阿里云下載下來的centos基礎鏡像 FROM centos ENTRYPOINT ["/bin/echo","this is test entrypoint"]
2)使用dockerfile構建鏡像
3)啟動剛剛創建的鏡像
a: 直接在docker run 后面加參數/bin/bash,entrypoint會把/bin/bash當成一個echo的字符串參數,不會進入到容器中。
b: 如果想覆蓋dockerfile中entrypoint指令,可以在docker run命令中加–entrypoint參數來指定。
可以發現不打印上面的內容了,直接進入容器
c:直接啟動容器
到此這篇關于docker中CMD和ENTRYPOINT區別的文章就介紹到這了,更多相關docker CMD和ENTRYPOINT內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!