国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

docker 系列之 Dockerfile 文件里 cmd命令與entrypoint命令區(qū)別

這篇具有很好參考價值的文章主要介紹了docker 系列之 Dockerfile 文件里 cmd命令與entrypoint命令區(qū)別。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、cmd:

cmd給出的是一個容器的默認(rèn)的可執(zhí)行體。也就是容器啟動以后,默認(rèn)的執(zhí)行的命令。重點就是這個“默認(rèn)”。意味著,如果docker run沒有指定任何的執(zhí)行命令或者dockerfile里面也沒有entrypoint,那么,就會使用cmd指定的默認(rèn)的執(zhí)行命令執(zhí)行。同時也從側(cè)面說明了entrypoint的含義,它才是真正的容器啟動以后要執(zhí)行命令。

The CMD instruction has three forms:
 
CMD ["executable","param1","param2"] (exec form, this is the preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (shell form)

用法1:帶有中括號的形式

帶有中括號的形式。這時,命令沒有再任何shell終端環(huán)境下,如果我們要執(zhí)行shell,必須把shell加入到中括號的參數(shù)中。這種用法就像一個c語言的exec函數(shù),意思是我們要執(zhí)行一個進(jìn)程。如果采用非shell的方法,那么上面的例子要修改為:

FROM centos
 
CMD ["/bin/bash", "-c", "echo 'hello cmd!'"]

注意:采用中括號形式,那么第一個參數(shù)必須是命令的全路徑才行。而且,一個dockerfile至多只能有一個cmd,如果有多個,只有最后一個生效。官網(wǎng)推薦采用這種方法。

當(dāng)然,以上都是體現(xiàn)了cmd的“默認(rèn)”行為。如果我們在run時指定了命令或者有entrypoint,那么cmd就會被覆蓋。仍然是上面的image。run命令變了:
docker entrypoint和cmd,運維部署,docker,linux,運維
可以看到,最終容器里面執(zhí)行的是run命令后面的命令,而不是cmd里面定義的。

用法2:shell form,即沒有中括號的形式

那么命令command默認(rèn)是在“/bin/sh -c”下執(zhí)行的。比如下面的dockerfile:

FROM centos
 
CMD echo "hello cmd!"

運行:
docker entrypoint和cmd,運維部署,docker,linux,運維

注意:采用中括號形式,那么第一個參數(shù)必須是命令的全路徑才行。而且,一個dockerfile至多只能有一個cmd,如果有多個,只有最后一個生效。

二、entrypoint:

entrypoint才是正統(tǒng)地用于定義容器啟動以后的執(zhí)行體的,其實我們從名字也可以理解,這個是容器的“入口”。
有兩種用法:命令行和shell。

ENTRYPOINT has two forms:
 
ENTRYPOINT ["executable", "param1", "param2"] (exec form, preferred)
ENTRYPOINT command param1 param2 (shell form)

第一種:命令行模式,也就是帶中括號

和cmd的中括號形式是一致的,但是這里貌似是在shell的環(huán)境下執(zhí)行的,與cmd有區(qū)別。如果run命令后面有東西,那么后面的全部都會作為entrypoint的參數(shù)。如果run后面沒有額外的東西,但是cmd有,那么cmd的全部內(nèi)容會作為entrypoint的參數(shù),這同時是cmd的第二種用法。這也是網(wǎng)上說的entrypoint不會被覆蓋。當(dāng)然如果要在run里面覆蓋,也是有辦法的,使用–entrypoint即可。

例如:
dockerfile為:

FROM centos
 
CMD ["p in cmd"]
ENTRYPOINT ["echo"]

如果run不帶參數(shù):
docker entrypoint和cmd,運維部署,docker,linux,運維
如果run帶參數(shù):
docker entrypoint和cmd,運維部署,docker,linux,運維
而且,確實entrypoint的中括號形式下,command是在shell環(huán)境下運行的,否則這里的echo是無法被執(zhí)行的。

第二種:shell模式

在這種模式下,任何run和cmd的參數(shù)都無法被傳入到entrypoint里。官網(wǎng)推薦第一種用法。
例如:

FROM centos
 
CMD ["p in cmd"]
ENTRYPOINT echo

docker entrypoint和cmd,運維部署,docker,linux,運維

三、總結(jié):

一般還是會用entrypoint的中括號形式作為docker 容器啟動以后的默認(rèn)執(zhí)行命令,里面放的是不變的部分,可變部分比如命令參數(shù)可以使用cmd的形式提供默認(rèn)版本,也就是run里面沒有任何參數(shù)時使用的默認(rèn)參數(shù)。如果我們想用默認(rèn)參數(shù),就直接run,否則想用其他參數(shù),就run 里面加參數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-744186.html

到了這里,關(guān)于docker 系列之 Dockerfile 文件里 cmd命令與entrypoint命令區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 48-Dockerfile-CMD/ENTRYPOINT指令

    48-Dockerfile-CMD/ENTRYPOINT指令

    前言 本篇來學(xué)習(xí)下Dockerfile中的CMD/ENTRYPOINT指令 CMD 作用 啟動容器時默認(rèn)執(zhí)行的命令 說明: 一個 Dockerfile 只有一個 CMD 指令,只有最后一個 CMD 指令生效 使用 docker run -d xxx CMD 命令是可以覆蓋 Dockerfile 中的 CMD 指令的 格式 使用示例 新建dockerfile 制作鏡像 運行容器 可以看到只執(zhí)

    2024年02月04日
    瀏覽(16)
  • dockerfile用ENTRYPOINT好還是用CMD好

    在 Dockerfile 中使用 `ENTRYPOINT` 和 `CMD` 都有其用途和優(yōu)劣勢,具體取決于你的應(yīng)用和需求。這兩個指令的主要區(qū)別在于如何處理容器啟動時的命令參數(shù)。 1. `CMD` 指令: ? ?- `CMD` 用于定義容器啟動時的默認(rèn)命令,但它可以在運行容器時被替代。如果在運行容器時提供了命令參數(shù)

    2024年02月08日
    瀏覽(22)
  • docker的run,cmd,entrypoint分析和對比

    docker的run,cmd,entrypoint分析和對比

    本文一起看下Dockerfile中經(jīng)常用到的幾個類似命令,RUN,CMD,ENTRYPOINT。 想要有容器我們就必須先創(chuàng)建鏡像,而想要有鏡像,我們則必須寫一個用來描述想要創(chuàng)建的鏡像的文件,這個文件我們一般叫做Dockerfile (非強(qiáng)制) ,則容器怎么來的就如下圖: 經(jīng)過上圖的 過程1 我們就有

    2024年02月01日
    瀏覽(15)
  • PowerShell系列(一):PowerShell介紹和cmd命令行的區(qū)別

    PowerShell系列(一):PowerShell介紹和cmd命令行的區(qū)別

    目錄 1、cmd命令行窗口有哪些缺點呢? 2、PowerShell的產(chǎn)生 3、PowerShell優(yōu)點 4、PowerShell使用場景 什么是Windows系統(tǒng)的命令行環(huán)境,之前我們在使用XP、Win7系統(tǒng)的時候,用的最多的就是微軟官方自帶的cmd命令窗口了,我們通過敲命令行窗口可以實現(xiàn)和操作系統(tǒng)之間的交互。當(dāng)然隨著

    2024年02月06日
    瀏覽(33)
  • dockerfile ENTRYPOINT 執(zhí)行.sh腳本提示找不到文件或文件不存在 No such file or directory

    我這里記錄的是我遇到的一種特殊情況,如果你也遇到了這個問題,且都試了在百度中找到的解決方法還沒有解決可以看看是不是和我遇到的問題一樣。 在Dockerfile中,我ADD了兩個文件,一個是jar包,一個是一個執(zhí)行jar包的.sh文件 但是在使用命令: 就會提示 /bin/sh: 0: cannot

    2024年01月21日
    瀏覽(27)
  • docker ENTRYPOINT 執(zhí)行多條命令

    如何在docker里面同時啟動多個pm2進(jìn)程_祥仔先生的博客-CSDN博客_docker pm2 ENTRYPOINT 命令1 命令2 命令3 dockerfile中添加: RUN chmod -x setup.sh ENTRYPOINT [\\\"sh\\\", \\\"./setup.sh\\\"]

    2024年02月12日
    瀏覽(20)
  • Docker Compose映射卷的作用是什么,dockerfile這個文件有什么區(qū)別和聯(lián)系?

    Docker Compose映射卷的作用是什么,dockerfile這個文件有什么區(qū)別和聯(lián)系?

    Docker Compose中映射卷(Volumes)的作用和Dockerfile之間既有區(qū)別也有聯(lián)系。下面詳細(xì)解釋兩者的作用、區(qū)別和聯(lián)系: Docker Compose映射卷的作用 在Docker Compose中,卷(Volumes)用于數(shù)據(jù)持久化和數(shù)據(jù)共享: 數(shù)據(jù)持久化 :容器自身是易失的,當(dāng)容器被刪除時,存儲在容器內(nèi)部的數(shù)據(jù)也

    2024年02月21日
    瀏覽(14)
  • Dockerfile——ENTRYPOINT詳解

    Dockerfile——ENTRYPOINT詳解

    ??Entrypoint的作用是,把整個container變成了一個可執(zhí)行的文件,這樣不能夠通過替換CMD的方法來改變創(chuàng)建container的方式。但是可以通過參數(shù)傳遞的方法影響到container內(nèi)部。 ENTRYPOINT 有兩種格式: ENTRYPOINT [“executable”, “param1”, “param2”] (exec 格式,首選) ENTRYPOINT command param

    2024年02月08日
    瀏覽(14)
  • Dockerfile ENTRYPOINT 使用變量

    如下 Dockerfile 文件中: 本意是想在 entrypoint 執(zhí)行的命令中添加變量參數(shù) JAVA_OPTS 和 PARAMS,如果按照這樣寫,變量是不被解析的,會報錯。 那么正確的寫法是使用 sh -c 命令來執(zhí)行后面的命令,示例如下: (END)

    2024年02月16日
    瀏覽(14)
  • Dockerfile 與 Docker Compose區(qū)別

    目錄 Dockerfile Docker Compose 綜合比較 Dockerfile 用途: Dockerfile 用于定義單個容器的構(gòu)建過程。它包含了一系列指令,每個指令都代表容器構(gòu)建過程中的一個步驟。這些步驟包括從基礎(chǔ)鏡像中構(gòu)建、安裝依賴、拷貝文件、設(shè)置環(huán)境變量等操作。 語法: Dockerfile 是一個文本文件,其

    2024年02月05日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包