2.7 run vs cmd vs entrypoint

首先明確一下概念:

run:執(zhí)行命令并創(chuàng)建新的 image layer
cmd:設置容器啟動后默認執(zhí)行的命令和參數(shù)
entrypoint:設置容器啟動時運行的命令

在介紹cmd和entrypoint之前,先了解一下shell和exec格式:

  • shell:
FROM centos
RUN apt-get install -y vim
ENV name docker
CMD echo "hello docker"
ENTRYPOINT echo "hello $name "
  • exec
FROM centos  
RUN ["apt-get", "install", "-y", "vim"]
ENV name docker
CMD ["/bin/echo", "hello docker"]
ENTRYPOINT ["/bin/bash","-c",  "echo hello $name "]
  • build一個docker
cd somefile
docker build -t cc/xxx .

CMD

容器啟動時默認執(zhí)行的命令

FROM centos
ENV name docker
CMD echo "hello $name"

情況一:如果docker run指定了其它命令,CMD命令被忽略

docker run -it [image] /bin/bsh

情況二:如果定義了多個CMD,只有最后一個執(zhí)行

...
CMD echo "hello ab"
CMD echo "hello $name"  # 只執(zhí)行這個

ENTRYPOINT

讓容器以應用程序或者服務的形式運行
特點:不會被忽略,一定執(zhí)行
最佳實踐:寫一個shell腳本作為entrypoint

COPY docker-entrypoint.sh /usr/local/bin
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 27017
CMD ["mongoDB"]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容