Dockerfile的常用指令

2021-10-24 08:49:05 字數 3717 閱讀 1722

dockerfile命令格式:

#nginx:test(映象名稱:映象標籤)

docker build -t nginx:test .

功能:cmd指令用於指定乙個容器啟動時要執行的命令。

例:這裡我們將-l標誌傳遞給了/bin/bash命令。

cmd [

"/bin/bash","-l"

]

功能:entrypoint與cmd指令類似,entrypoint指令提供的命令不容易在啟動容器時被覆蓋。實際上,docker run命令列中指定的任何引數都會被當作引數再次傳遞給entrypoint指令中指定的命令。

例:

#為entrypoint指令指定引數

entrypoint [

"/usr/sbin/nginx","-g","daemon off;"

]

#用新的entrypoint指令重新構建static_web映象

sudo docker build -t=

"test/static_web"

.

#使用docker run 命令啟動包含entrypoint指令的容器

sudo docker run -t -i test/static_web -g "daemon off;"

重新並構建了乙個新的映象,並且啟動了乙個互動的容器。我們指定了-g 」daemon off;"引數,這個引數會傳遞給用entrypoint指定的命令,在這裡該命令為/usr/sbin/nginx -g "daemon off;"。該命令會議前台執行的方式啟動nginx守護程序,此時這個容器就會作為一台web伺服器來執行。

#同時使用entrypoint和cmd指令

entrypoint [

"/usr/sbin/nginx"

]cmd [

"-h"

]

此時當我們啟動乙個容器時,任何在命令列中指定的引數都會被傳遞給nginx守護程序。比如,我們可以指定-g "daemon off;"引數讓nginx守護程序以前臺方式執行。如果再啟動容器時不指定任何引數,則在cmd指令中指定的-h引數會被傳遞給nginx守護程序,即nginx伺服器會以/usr/sbin/nginx -h的方式啟動,該命令用來顯示nginx的幫助資訊。

功能:workdir指令用來在從映象建立乙個新容器時,在容器內部設定乙個工作目錄,entrypoint和/或cmd指定的程式會在這個目錄下執行。

#使用workdir指令

run bundle install

entrypoint [

"rackup"

]

sudo docker run -ti -w /var/log ubuntu pwd /var/log
該命令會將容器內的工作目錄設定為/var/log

功能:env指令用來在映象內構建過程中設定環境變數。

例:

env rvm_path /home/rvm
這個新的環境變數可以在後續的任何run指令中使用,這就如同在命令前面制定了環境變數字首一樣

run gem install unicorn
該指令會以如下方式執行:

rvm_path=/home/rvm/ gem install unicorn
也可以是用docker run命令列的-e標誌來傳遞環境變數。這些變數將只會在執行時有效

功能:user指令用來指定該映象會以什麼樣的使用者去執行。

例:

user nginx
基於該映象啟動的容器會以nginx使用者的身份來執行,如果不通過user指令指定使用者,預設使用者為root。

功能:volume指令用來向基於映象建立的容器新增卷。 乙個卷是可以存在與乙個或者多個容器內的特定目錄,這個目錄可以繞過聯合檔案系統,並提供如下共享資料或者對資料進行持久化的功能。

#指定乙個掛載點

volume [

"/opt/project"

]##陣列方式指定多個掛載點

volume [

"/opt/project","/data"

]

這條指令將會為基於此映象建立的任何容器建立乙個名為/opt/project的掛載點。

功能:add指令用來將構建環境下的檔案和目錄複製到映象中。如果將乙個歸檔檔案(合法的歸檔檔案包括gzip、bzip2、xz)指定為原始檔,docker會自動將歸檔檔案解開(unpack)。

例:

add latest.tar.gz /var/www/wordpress
指向原始檔的位置引數可以是乙個url,或者構建上下文或環境中檔名或者目錄。不能對構建目錄或者上下文職位的檔案進行add操作。

如果目的位置的目錄下已經存在了 和歸檔檔案同名的檔案或者目錄,那麼目的位置中的檔案或者目錄不會被覆蓋。

功能:與add指令類似,它們的根本不同時copy只關心在構建上下文中複製本地檔案,而不會去做檔案提取和解壓的工作。

例:

copy test.txt/ /etc/apache2/
這條指令將會把本地test.txt目錄中的檔案複製到/etc/apache2/的目錄中。

如果目的位置不存在,docker將會自動建立所有需要的目錄結構,就像mkdir -p命令。

功能:label指令用於為docker映象新增元資料。元資料以鍵值對的形式展現。

例:

label location=

"new york" type=

"data center" version=

"1.0"

label 指令以label="value"的形式出現。可以在每一條指令中指定乙個或多個元資料,不同元資料用空格分隔。

功能:stopsignal指令用來設定停止容器時傳送什麼系統呼叫訊號給容器。這個訊號必須時核心系統呼叫表中合法的數。

功能:arg指令用來定義可以在docker build命令執行時傳遞給構建執行時的變數,我們只需咋構建時使用--build-arg標誌即可。使用者只能在構建時指定在dockerfile檔案中定義過的引數。

例:

arg build
上面例子中第二條arg指令設定了乙個預設值,如果構建是沒有為該引數指定值,就會使用這個預設值。

功能:onbuild指令能為映象台南佳觸發器(trigger),當乙個映象被用作其他映象的基礎映象時,該映象中的觸發器將會被執行。

onbuild觸發器會按照在父映象中指定的順序執行,並且只能被繼承一次(也就是說只能在子映象中執行,而不會在孫子映象中執行)

功能:宣告埠

幫助映象使用者理解這個映象服務的守護埠,以方便配置對映。

在執行時使用隨機埠對映docker run -p時,會自動隨機對映 expose 的埠。

Dockerfile 常用指令

下面列出了 dockerfile 中最常用的指令,完整列表和說明可參看官方文件。from 指定 base 映象。maintainer 設定映象的作者,可以是任意字串。copy 將檔案從 build context 複製到映象。copy 支援兩種形式 copy src dest copy src de...

Dockerfile常用指令

from from指令是最重要的乙個並且必須為dockerfile檔案開篇的第乙個非注釋行,用於為映象檔案構建過程指定基礎映象,後續的指令執行於此基礎映象提供的執行環境 這個基礎映象可以是任何可用映象,預設情況下docker build會從本地倉庫找指定的映象檔案,如果不存在就會從docker hu...

Dockerfile中常用的指令

dockerfile中常用的指令 from 基礎映象 copy 複製檔案 add 新增檔案 run 要執行的命令 cmd 容器啟動時要執行的命令 expose 預設向外暴漏埠 volume 建立掛載點 workdir 工作目錄 user 當前操作使用者 docker持久化儲存 資料卷 資料卷的增 刪...