亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Dockerfile中CMD和Enrypoint之間有什么區別?

在Dockerfile中CMD和Enrypoint之間有什么區別?

在Dockerfile中CMD和Enrypoint之間有什么區別?在Dockerfiles中,有兩個命令看起來類似于我:CMD和ENTRYPOINT..但我想有一種(微妙的?)它們之間的區別-否則,對于同一件事情有兩個命令是沒有任何意義的。文件規定CMDCMD的主要目的是為正在執行的容器提供默認值。而為了ENTRYPOINT:入口點幫助您配置可以作為可執行文件運行的容器。那么,這兩個命令有什么區別呢?
查看完整描述

3 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

Docker有一個默認的入口點,即/bin/sh -c但是沒有默認命令。

當你像這樣經營碼頭時:docker run -i -t ubuntu bash入口點是默認的/bin/sh -c,圖像是ubuntu命令是bash.

該命令通過入口點運行。也就是說,實際執行的事情是/bin/sh -c bash..這允許Docker實現RUN依賴于shell的解析器。

后來,人們要求能夠定制這個,所以ENTRYPOINT--entrypoint介紹了。

之后的一切ubuntu在上面的例子中,是命令并傳遞給入口點。當使用CMD指令,就好像你在做docker run -i -t ubuntu <cmd><cmd>將是入口點的參數。

如果您輸入以下命令,也會得到相同的結果。docker run -i -t ubuntu..您仍將在容器中啟動bash shell,因為Ubuntu Dockerfile指定默認的CMD:CMD ["bash"]

當一切都傳遞到入口點時,您可以從圖像中得到非常好的行為。@Jiri示例很好,它展示了如何使用圖像作為“二進制”。使用時["/bin/cat"]作為切入點然后docker run img /etc/passwd你明白了,/etc/passwd是命令,并被傳遞到入口點,因此最終結果的執行是簡單的/bin/cat /etc/passwd.

另一個例子是有任何cli作為入口點。例如,如果您有一個redis映像,而不是運行docker run redisimg redis -H something -u toto get key,你可以簡單地ENTRYPOINT ["redis", "-H", "something", "-u", "toto"]然后像這樣運行,得到相同的結果:docker run redisimg get key.


查看完整回答
反對 回復 2019-06-18
  • 3 回答
  • 0 關注
  • 826 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號