好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > docker中的run/cmd/entrypoint的區別詳解

docker中的run/cmd/entrypoint的區別詳解

熱門標簽:藍點外呼系統 400電話申請方案 威海人工外呼系統供應商 做外呼系統的公司違法嗎 在百度地圖標注車輛 貴陽教育行業電話外呼系統 撫順移動400電話申請 烏海智能電話機器人 寧夏房產智能外呼系統要多少錢

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

  • run命令執行命令并創建新的鏡像層,通常用于安裝軟件包
  • cmd命令設置容器啟動后默認執行的命令及其參數,但CMD設置的命令能夠被docker run命令后面的命令行參數替換
  • entrypoint配置容器啟動時的執行命令,不會被忽略,一定會被執行,即使運行 docker run時指定了其他命令。

Shell格式和Exec格式運行命令

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

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

cmd和entrypoint推薦使用exec格式,因為指令的可讀性更強,更容易理解,而run則兩種格式都可以。

Exec格式的坑

dockerfile的內容如下:

env name morris

entrypoint ["echo", "$name"]

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

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

env name morris

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

run命令

run指令通常用于安裝應用和軟件包。run在當前鏡像的頂部執行命令,并通過創建新的鏡像層。Dockerfile中常常包含多個run指令。下面是一個例子:

run yum update && yum install -y \  
 bzr \

 cvs \

 git \

 mercurial \

 subversion

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

cmd命令

cmd指令允許用戶指定容器的默認執行的命令。此命令會在容器啟動且docker run沒有指定其他命令時運行。下面是一個例子:

cmd echo "Hello world"

運行容器docker run -it [image]將輸出:

Hello world

但當后面加上一個命令,比如docker run -it [image] echo hi,cmd會被忽略掉,命令echo hi將被執行:

hi

如果存在多個cmd命令,則只會執行最后一個cmd命令。

entrypoint命令

entrypoint的exec格式用于設置容器啟動時要執行的命令及其參數,同時可通過cmd命令或者命令行參數提供額外的參數。entrypoint中的參數始終會被使用,這是與cmd命令不同的一點。下面是一個例子:

entrypoint ["echo", "Hello"]

當容器通過docker run -it [image]啟動時,輸出為:

Hello

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

Hello morris

再來看一個例子,Dockerfile為:

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

當容器通過docker run -it [image]啟動時,輸出為:

Hello world

而如果通過docker run -it [image] morris啟動時,輸出為:

Hello morris

entrypoint中的參數始終會被使用,而cmd的額外參數可以在容器啟動時動態替換掉。

同樣的,如果存在多個entrypoint命令,則只會執行最后一個entrypoint命令。

總結

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

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

標簽:慶陽 松原 周口 那曲 泰州 蕪湖 朝陽 銅川

巨人網絡通訊聲明:本文標題《docker中的run/cmd/entrypoint的區別詳解》,本文關鍵詞  docker,中的,run,cmd,entrypoint,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《docker中的run/cmd/entrypoint的區別詳解》相關的同類信息!
  • 本頁收集關于docker中的run/cmd/entrypoint的區別詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 黑人女人猛交一二三区A片| 九九电影院理论片在线观看| 搬淫家永久| 精品国产又爽又爽www张津瑜| 护士好紧好爽再搔一点浪一点| 我和香蕉在ktv被八男玩| 欧洲无码亚洲AV一品道在线观看 | 在线视频黄色| 巨大乳沟h晃动| 97视频hd| 欧美人七十二式性视频教程一| 十九岁日本韩国电影免费完整版观看| 欧美精品专区在线观看| 激情爱爱动图| 美国一级黄色片子| 国产无套精品一区二区三区| 欧洲美女裸体做爰XXXⅩ24| 蜜桃aⅴ色欲A片无码精品接吻| 性生生活高清视频| 国产在线麻豆精品| 丁香六月婷婷七月激情| 啊轻点灬大巴太粗太长了视频| 男男gaygays网站| 99草精品视频| 啊啊啊深一点| 欧美疯狂三p群体交乱视频| 快穿之女配肉袭| 亚洲女人被黑人巨大进入| 久久国产精品欧美熟妇AV电影| 操操软件| 草逼动图| 日本三级视频在线播放| 多女主黄h长篇小说| 欧洲女人高潮XXXXRMmm| 久久精品国内偷自一区| 曰本性生活| 黄色短视频在线免费观看| 波霸ol色综合网| 日韩欧美一级人妻潮喷Av一级| 爽死你个放荡粗暴小淫货h文| 天天摸日日碰天天看免费|