Dockerfile
什麼是Dockerfile ?
是一個文字檔,由一行一行的指令所組成,用來描述這個映像檔應該長成怎麼樣
利用Dockerfile可以建構/客製化出自己獨一無二的映像檔
由於Dockerfile中可以清楚的知道映像檔的組成,因此,在安全性上會有所提升
因為是純文字檔,所以檔案很小、很容易分享
組成
由一行一行的指令列所組成,一行指令對Image來說就是一層的資料層(Layer),
一個Image就是靠這樣一層一層的資料累加上去,最後才編譯出自己想要的映像檔
註解可用#
FROM
基底映像檔,必需是「第一個」指令行,指定最基本的image
MAINTAINER
映像檔維護者,把它想成是作者即可
LABEL
設定映像檔的Metadata資訊,中間用空白鍵隔開
比MAINTAINER方便一些
如果要查詢LABEL的資訊:
RUN
每加一個RUN,就會在基底映像層加上一層資料層,可以利用RUN來安裝套件
RUN <command>
以shell的形式執行,Linux的預設是/bin/sh -c,而Windows上的預設環境則是cmd /S /C
RUN ["executable", "param1", "param2"]
以exec的形式執行指令,例如Linux上不想用預設的shell執行指令
那麼就可以透過RUN ["/bin/bash", "-c", "echo hello"]指定想要的shell
若希望有Shell處理的功能,記得要自行加入
在使用RUN指令時,有以下注意要點:
如果想要執行的指令很長,可以利用
\
符號來換行,比較容易閱讀使用exec形式執行時,必需使用JSON array的格式,因此,請使用雙引號
每一個RUN就會新增一層資料層,為了減少不必要的資料層,可以利用
&&
來串連多個命令
範例
CMD
Last updated