建立dockerfile檔案
from python:3.8 //拉取基礎映象workdir /root/a6_cooling_work //設定工作目錄
copy . /root/a6_cooling_work/ //複製所有需要的檔案到工作目錄下
cmd [
"python
","***.py
"] // 執行命令,注意py檔案路徑
from:定製的映象都是基於 from 的映象,這裡的 python:3.8就是定製需要的基礎映象。run:用於執行後面跟著的命令列命令。有以下倆種格式:
shell 格式:
run
《命令列命令》
#《命令列命令》 等同於,在終端操作的 shell 命令。
exec
格式:run [
"可執行檔案
", "
引數1", "
引數2"]#
例如:#
run ["./test.php", "dev", "offline"] 等價於 run ./test.php dev offline
copy
複製指令,從上下文目錄中複製檔案或者目錄到容器裡指定路徑。
《目標路徑》:容器內的指定路徑,該路徑不用事先建好,路徑不存在的話,會自動建立。
addadd 的優點:在執行
《原始檔》 為 tar 壓縮檔案的話,壓縮格式為 gzip, bzip2 以及 xz 的情況下,會自動複製並解壓到 《目標路徑》。
add 的缺點:在不解壓的前提下,無法複製 tar 壓縮檔案。會令映象構建快取失效,從而可能會令映象構建變得比較緩慢。具體是否使用,可以根據是否需要自動解壓來決定。
cmd類似於 run 指令,用於執行程式,但二者執行的時間點不同:
cmd 在docker run 時執行。
run 是在 docker build。
作用:為啟動的容器指定預設要執行的程式,程式執行結束,容器也就結束。cmd 指令指定的程式可被 docker run 命令列引數中指定要執行的程式所覆蓋。
注意:如果 dockerfile 中如果存在多個 cmd 指令,僅最後乙個生效。
entrypoint
類似於 cmd 指令,但其不會被 docker run 的命令列引數指定的指令所覆蓋,而且這些命令列引數會被當作引數送給 entrypoint 指令指定的程式。
但是, 如果執行 docker run 時使用了 --entrypoint 選項,將覆蓋 entrypoint 指令指定的程式。
優點:在執行 docker run 的時候可以指定 entrypoint 執行所需的引數。
注意:如果 dockerfile 中如果存在多個 entrypoint 指令,僅最後乙個生效。
env設定環境變數,定義了環境變數,那麼在後續的指令中,就可以使用這個環境變數。
arg構建引數,與 env 作用一致。不過作用域不一樣。arg 設定的環境變數僅對 dockerfile 內有效,也就是說只有 docker build 的過程中有效,構建好的映象內不存在此環境變數。
構建命令 docker build 中可以用 --build-arg 《引數名》=《值》來覆蓋。
volume
定義匿名資料卷。在啟動容器時忘記掛載資料卷,會自動掛載到匿名卷。
作用:避免重要的資料,因容器重啟而丟失,這是非常致命的。
避免容器不斷變大。
expose
僅僅只是宣告埠。
作用:幫助映象使用者理解這個映象服務的守護埠,以方便配置對映。
在執行時使用隨機埠對映時,也就是 docker run -p 時,會自動隨機對映 expose 的埠。
workdir
指定工作目錄。用 workdir 指定的工作目錄,會在構建映象的每一層中都存在。(workdir 指定的工作目錄,必須是提前建立好的)。
docker build 構建映象過程中的,每乙個 run 命令都是新建的一層。只有通過 workdir 建立的目錄才會一直存在。
user
用於指定執行後續命令的使用者和使用者組,這邊只是切換後續命令執行的使用者(使用者和使用者組必須提前已經存在)。
healthcheck
用於指定某個程式或者指令來監控 docker 容器服務的執行狀態。
onbuild
用於延遲構建命令的執行。簡單的說,就是 dockerfile 裡用 onbuild 指定的命令,在本次構建映象的過程中不會執行(假設映象為 test-build)。當有新的 dockerfile 使用了之前構建的映象 from test-build ,這時執行新映象的 dockerfile 構建時候,會執行 test-build 的 dockerfile 裡的 onbuild 指定的命令。
label
label 指令用來給映象新增一些元資料(metadata),以鍵值對的形式。
label
===...
label authors="
runoob
"
DockerFile檔案的編寫及Docker應用
經過最近幾天在專案中使用的docker實際操作經驗,特將docker常用操作及關鍵點總結如下 docker映象生成命令 sudo docker build t dse docker 104 注意 後面有個點,別忘了 docker容器生成命令 sudo docker run d dse docker ...
Dockerfile編寫記錄
dockerfile 近期幫朋友製作了docker映象以方便使用,在製作的過程中經歷了相容問題,映象size臃腫,映象內多服務問題,下面開始碼例項。from euleros workdir opt add opencv 4.1.0.tar.gz opt run rpm rpmbuilddb yum ...
Dockerfile編寫語法
docker映象本質上就是乙個個基礎映象的堆疊,為了做出我們想要的映象,我們需要考慮最終映象所需的所有基礎環境,然後一層層堆疊.也就是不斷以基礎映象搭建上層映象.先看例子 version 1.0.0 create time 2015 12 25 11 04 author description 基於...