国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:82日期:2024-10-24 14:34:03

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 morrisentrypoint ['echo', '$name']

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

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

env name morrisentrypoint ['/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
相關文章:
主站蜘蛛池模板: 丝袜足液精子免费视频 | 男操女视频网站 | 免费视频成人国产精品网站 | 国产女厕偷窥系列在线视频 | 亚洲精品一区二区综合 | 黑人边吃奶边扎下面激情视频 | 日韩高清一级毛片 | www.99精品视频在线播放 | 高清一级淫片a级中文字幕 高清一区二区 | 欧美国产精品不卡在线观看 | 久久精品国产99国产精品 | 国产a级午夜毛片 | 亚洲欧美在线播放 | 国产成人综合日韩精品无 | 欧美一区二区视频三区 | 国产在线观看免费 | 狠狠色噜狠狠狠狠色综合久 | 视频一区二区三区自拍 | 加勒比heyzo 加勒比久久综合 | 欧美整片在线观看 | 午夜精品久久久久久99热7777 | a久久99精品久久久久久不 | 一区二区日韩 | 亚洲在线视频观看 | 亚洲精品一区最新 | 日韩亚洲欧美一区噜噜噜 | 国产毛片基地 | 国产精品手机在线亚洲 | 一级特黄牲大片免费视频 | 一区二区国产精品 | 日韩欧美一级毛片视频免费 | 99在线视频播放 | 成人公开免费视频 | 一本久道综合久久精品 | 欧美亚洲第一区 | 亚洲偷自拍另类图片二区 | 亚洲一区二区三区在线播放 | 一区二区三区在线 | 日本 | 九九成人 | 国产成人综合高清在线观看 | 欧美日韩精品高清一区二区 |