最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker中的run/cmd/entrypoint的區(qū)別詳解

 更新時(shí)間:2021年08月03日 10:02:19   作者:morris131  
Dockerfile中run、cmd和entrypoint都能夠用于執(zhí)行命令,針對(duì)每個(gè)命令給他介紹詳細(xì)用途,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

Dockerfile中run、cmd和entrypoint都能夠用于執(zhí)行命令,下面是三者的主要用途:

  • run命令執(zhí)行命令并創(chuàng)建新的鏡像層,通常用于安裝軟件包
  • cmd命令設(shè)置容器啟動(dòng)后默認(rèn)執(zhí)行的命令及其參數(shù),但CMD設(shè)置的命令能夠被docker run命令后面的命令行參數(shù)替換
  • entrypoint配置容器啟動(dòng)時(shí)的執(zhí)行命令,不會(huì)被忽略,一定會(huì)被執(zhí)行,即使運(yùn)行 docker run時(shí)指定了其他命令。

Shell格式和Exec格式運(yùn)行命令

我們可以用下面兩種格式指定run、cmd和entrypoint要運(yùn)行的命令:

  • Shell格式: 。例如:yum install -y wget
  • Exec格式: [“executable”, “param1”, “param2”, …]。例如: [“yum”, “install”, “-y”, “wget”]

cmd和entrypoint推薦使用exec格式,因?yàn)橹噶畹目勺x性更強(qiáng),更容易理解,而run則兩種格式都可以。

Exec格式的坑

dockerfile的內(nèi)容如下:

env name morris

entrypoint ["echo", "$name"]

這種寫法只會(huì)打印出$name,不會(huì)進(jìn)行變量的替換,原因是它只是在執(zhí)行echo命令,并不是執(zhí)行shell。意思是說,我們不是在shell里執(zhí)行echo,只是單純的執(zhí)行echo,所以不會(huì)替換變量。

想要改成可執(zhí)行的shell,需要改寫成以下形式

env name morris

entrypoint ["/bin/bash", "-c", "echo $name"]

run命令

run指令通常用于安裝應(yīng)用和軟件包。run在當(dāng)前鏡像的頂部執(zhí)行命令,并通過創(chuàng)建新的鏡像層。Dockerfile中常常包含多個(gè)run指令。下面是一個(gè)例子:

run yum update && yum install -y \  
 bzr \
 cvs \
 git \
 mercurial \
 subversion

yum update和yum install被放在一個(gè)run指令中執(zhí)行,這樣能夠保證每次安裝的是最新的包。如果yum install在單獨(dú)的run中執(zhí)行,則會(huì)使用yum update創(chuàng)建的鏡像層,而這一層可能是很久以前緩存的。

cmd命令

cmd指令允許用戶指定容器的默認(rèn)執(zhí)行的命令。此命令會(huì)在容器啟動(dòng)且docker run沒有指定其他命令時(shí)運(yùn)行。下面是一個(gè)例子:

cmd echo "Hello world"

運(yùn)行容器docker run -it [image]將輸出:

Hello world

但當(dāng)后面加上一個(gè)命令,比如docker run -it [image] echo hi,cmd會(huì)被忽略掉,命令echo hi將被執(zhí)行:

hi

如果存在多個(gè)cmd命令,則只會(huì)執(zhí)行最后一個(gè)cmd命令。

entrypoint命令

entrypoint的exec格式用于設(shè)置容器啟動(dòng)時(shí)要執(zhí)行的命令及其參數(shù),同時(shí)可通過cmd命令或者命令行參數(shù)提供額外的參數(shù)。entrypoint中的參數(shù)始終會(huì)被使用,這是與cmd命令不同的一點(diǎn)。下面是一個(gè)例子:

entrypoint ["echo", "Hello"]

當(dāng)容器通過docker run -it [image]啟動(dòng)時(shí),輸出為:

Hello

而如果通過docker run -it [image] morris啟動(dòng),則輸出為:

Hello morris

再來看一個(gè)例子,Dockerfile為:

entrypoint ["echo", "Hello"]
cmd ["world"]

當(dāng)容器通過docker run -it [image]啟動(dòng)時(shí),輸出為:

Hello world

而如果通過docker run -it [image] morris啟動(dòng)時(shí),輸出為:

Hello morris

entrypoint中的參數(shù)始終會(huì)被使用,而cmd的額外參數(shù)可以在容器啟動(dòng)時(shí)動(dòng)態(tài)替換掉。

同樣的,如果存在多個(gè)entrypoint命令,則只會(huì)執(zhí)行最后一個(gè)entrypoint命令。

總結(jié)

  • 使用run指令安裝應(yīng)用和軟件包,構(gòu)建鏡像。
  • 如果Docker鏡像的用途是運(yùn)行應(yīng)用程序或服務(wù),比如運(yùn)行一個(gè)MySQL,應(yīng)該優(yōu)先使用Exec格式的entrypoint指令。cmd可為entrypoint提供額外的默認(rèn)參數(shù),同時(shí)可利用docker run命令行替換默認(rèn)參數(shù)。
  • 如果想為容器設(shè)置默認(rèn)的啟動(dòng)命令,可使用cmd指令。用戶可在docker run命令行中替換此默認(rèn)命令。

到此這篇關(guān)于docker中的run/cmd/entrypoint的區(qū)別詳解的文章就介紹到這了,更多相關(guān)docker run/cmd/entrypoint內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker 啟動(dòng)elasticsearch鏡像,掛載目錄后報(bào)錯(cuò)的解決

    docker 啟動(dòng)elasticsearch鏡像,掛載目錄后報(bào)錯(cuò)的解決

    這篇文章主要介紹了docker 啟動(dòng) elasticsearch鏡像,掛載目錄后報(bào)錯(cuò)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • docker鏡像消失的問題及臨時(shí)解決方案

    docker鏡像消失的問題及臨時(shí)解決方案

    本文主要介紹了docker鏡像消失的問題及臨時(shí)解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • docker部署kafka的方法步驟

    docker部署kafka的方法步驟

    本文主要介紹了docker部署kafka的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Docker安裝配置ES(elasticsearch)步驟詳解

    Docker安裝配置ES(elasticsearch)步驟詳解

    這篇文章主要給大家介紹了關(guān)于Docker安裝配置ES(elasticsearch)的相關(guān)資料,本文主要介紹了如何在指定目錄下安裝ES和Kibana,以及如何用IK分詞器進(jìn)行分詞,需要的朋友可以參考下
    2024-10-10
  • docker中容器的網(wǎng)絡(luò)配置常用命令詳解

    docker中容器的網(wǎng)絡(luò)配置常用命令詳解

    這篇文章主要介紹了docker中容器的網(wǎng)絡(luò)配置常用命令詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Docker基礎(chǔ) :網(wǎng)絡(luò)配置詳解

    Docker基礎(chǔ) :網(wǎng)絡(luò)配置詳解

    本篇文章將講述 Docker 的網(wǎng)絡(luò)功能,包括使用端口映射機(jī)制來將容器內(nèi)應(yīng)用服務(wù)提供給外部網(wǎng)絡(luò),以及通過容器互聯(lián)系統(tǒng)讓多個(gè)容器之間進(jìn)行快捷的網(wǎng)絡(luò)通信,有興趣的可以了解下。
    2017-02-02
  • docker容器跨服務(wù)器的遷移的方法

    docker容器跨服務(wù)器的遷移的方法

    本篇文章主要介紹了docker容器跨服務(wù)器的遷移的方法,docker的備份方式有export和save兩種,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • 教你如何通過編寫dockerfile部署python項(xiàng)目

    教你如何通過編寫dockerfile部署python項(xiàng)目

    Dockerfile是一個(gè)放置在項(xiàng)目根目錄下的描述文件,可以利用 Docker 命令基于該文件構(gòu)建一個(gè)鏡像,下面這篇文章主要給大家介紹了關(guān)于如何通過編寫dockerfile部署python項(xiàng)目的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • 如何讓docker中的mysql啟動(dòng)時(shí)自動(dòng)執(zhí)行sql語句

    如何讓docker中的mysql啟動(dòng)時(shí)自動(dòng)執(zhí)行sql語句

    這篇文章主要介紹了讓docker中的mysql啟動(dòng)時(shí)自動(dòng)執(zhí)行sql的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 使用Docker部署Spring Boot項(xiàng)目的實(shí)現(xiàn)步驟

    使用Docker部署Spring Boot項(xiàng)目的實(shí)現(xiàn)步驟

    本文主要介紹了使用Docker部署Spring Boot項(xiàng)目的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評(píng)論

五莲县| 黑水县| 临江市| 武陟县| 平远县| 济阳县| 高唐县| 铜山县| 健康| 区。| 临高县| 垦利县| 临漳县| 天峨县| 九江市| 吉隆县| 景德镇市| 方城县| 公主岭市| 台中县| 上犹县| 图木舒克市| 高密市| 青浦区| 麟游县| 云和县| 铜梁县| 高邮市| 贵南县| 南雄市| 漾濞| 松阳县| 北海市| 布尔津县| 开化县| 双牌县| 宕昌县| 廊坊市| 太仓市| 大丰市| 桃江县|