Dockerfile語法總結

2021-07-10 01:42:44 字數 2636 閱讀 8766

指令的一般格式為instruction arguments,指令包括frommaintainerrun等。

格式為fromfrom :

第一條指令必須為from指令。並且,如果在同乙個dockerfile中建立多個映象時,可以使用多個from指令(每個映象一次)。

格式為maintainer,指定維護者資訊。

格式為runrun ["executable", "param1", "param2"]

前者將在shell終端中執行命令,即/bin/sh -c;後者則使用exec執行。指定使用其它終端可以通過第二種方式實現,例如run ["/bin/bash", "-c", "echo hello"]

每條run指令將在當前映象基礎上執行指定命令,並提交為新的映象。當命令較長時可以使用\來換行。

支援三種格式

指定啟動容器時執行的命令,每個dockerfile只能有一條cmd命令。如果指定了多條命令,只有最後一條會被執行。

如果使用者啟動容器時候指定了執行的命令,則會覆蓋掉cmd指定的命令。

格式為expose [...]

告訴docker服務端容器暴露的埠號,供互聯系統使用。

格式為env。 指定乙個環境變數,會被後續run指令使用,並在容器執行時保持。

例如

env pg_major 9.3

env pg_version 9.3.4

run curl -sl | tar -xjc /usr/src/postgress && …

env path /usr/local/postgres-$pg_major/bin:$path

格式為add

該命令將複製指定的到容器中的。 其中可以是dockerfile所在目錄的乙個相對路徑;也可以是乙個url;還可以是乙個tar檔案(自動解壓為目錄)。則。

格式為copy

複製本地主機的(為dockerfile所在目錄的相對路徑)到容器中的

當使用本地目錄為源目錄時,推薦使用copy

兩種格式:

配置容器啟動後執行的命令,並且不可被docker run提供的引數覆蓋。

每個dockerfile中只能有乙個entrypoint,當指定多個時,只有最後乙個起效。

格式為volume ["/data"]

建立乙個可以從本地主機或其他容器掛載的掛載點,一般用來存放資料庫和需要保持的資料等。

格式為user daemon

指定執行容器時的使用者名稱或uid,後續的run也會使用指定使用者。

當服務不需要管理員許可權時,可以通過該命令指定執行使用者。並且可以在之前建立所需要的使用者,例如:run groupadd -r postgres && useradd -r -g postgres postgres。要臨時獲取管理員許可權可以使用gosu,而不推薦sudo

格式為workdir /path/to/workdir

為後續的runcmdentrypoint指令配置工作目錄。

可以使用多個workdir指令,後續命令如果引數是相對路徑,則會基於之前命令指定的路徑。例如

workdir /a

workdir b

workdir c

run pwd

則最終路徑為/a/b/c

格式為onbuild [instruction]

配置當所建立的映象作為其它新建立映象的基礎映象時,所執行的操作指令。

例如,dockerfile使用如下的內容建立了映象image-a

[...]

[...]

如果基於a建立新的映象時,新的dockerfile中使用from image-a指定基礎映象時,會自動執行onbuild指令內容,等價於在後面新增了兩條指令。

from image-a

#automatically run the following

使用onbuild指令的映象,推薦在標籤中註明,例如ruby:1.9-onbuild

Dockerfile編寫語法

docker映象本質上就是乙個個基礎映象的堆疊,為了做出我們想要的映象,我們需要考慮最終映象所需的所有基礎環境,然後一層層堆疊.也就是不斷以基礎映象搭建上層映象.先看例子 version 1.0.0 create time 2015 12 25 11 04 author description 基於...

Docker file 語法筆記

instruction argument,命令不區分大小寫,但約定為全部大寫 必須以from命令開始,命令出現的順序就是被執行的順序 from maintainer run 如 cd target tar zxvf datastudio.tar.gz chmod x datastudio bin r...

Dockerfile語法簡介(精)

dockerfile是由一系列命令和引數構成的指令碼,乙個dockerfile裡面包含了構建整個image的完整命令。docker通過docker build執行dockerfile中的一系列命令自動構建image。代表注釋 syntax from as 為映象生成元資料標籤資訊 syntax la...