編寫Dockerfile檔案

2022-09-22 01:30:21 字數 2506 閱讀 7999

建立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 基於...