dockerfile中CMD和ENTRYPOING真正的差別
世界只因有你
世界只因有你 2017-04-24 16:00:43
0
2
843

同樣是一個腳本,一個用CMD["/opt/setup.sh"],一個用ENTRYPOING["/opt、setup.sh"],此時我都以docker run -d 去啟動這個容器,此時用CMD的就可以up起來,但是ENTRYPOING卻是Exited,而且他還不能start起來,我查了CMD和ENTRYPOING的區別等資料,都沒有發現原因,我現在就想知道就我的這個而言,他的原理是什麼?

世界只因有你
世界只因有你

全部回覆(2)
黄舟

區別就是 ENTERPOINT 不被覆蓋, CMD 會被覆蓋。

舉個例子,同樣執行 docker run -it --rm <image_name> hello world

如果是 ENTERYPOINT ["/bin/bash"] 那么实际运行的命令是 /bin/bash hello world

如果是 CMD ["/bin/bash"] 那么实际运行的命令是 hello world

即,運行容器時的命令在 ENTERYPOINT 時是作為 ENTERYPOINT 的參數傳遞的;在使用 CMD 時是直接替換 CMD 的。

所以有一種取巧的用法,在 dockerfile 中同時使用二者:

ENTRYPOINT ["mongod"]
CMD ["--help"]

這樣使用者不僅可以自訂啟動 mongod 的參數,在不指定參數的時候還可以預設使用 --help 顯示幫助資訊

Ty80

查看logs先

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板