天天看點

Docker Dockerfile詳解

總目錄索引:K8s 從入門到放棄系列

FROM

功能為指定基礎鏡像,并且必須是第一條指令。

如果不以任何鏡像為基礎,那麼寫法為:FROM scratch。

同時意味着接下來所寫的指令将作為鏡像的第一層開始

文法:

RUN

功能為運作指定的指令

RUN指令有兩種格式

第二種是類似于函數調用。

可将executable了解成為可執行檔案,後面就是兩個參數。

兩種寫法比對:

CMD

功能為容器啟動時要運作的指令

文法有三種寫法

RUN & CMD

不要把RUN和CMD搞混了。

LABEL

功能是為鏡像指定标簽

如下:

MAINTAINER

指定作者

ENV

功能為設定環境變量

文法有兩種

ADD

一個複制指令,把檔案複制到景象中。

如果把虛拟機與容器想象成兩台linux伺服器的話,那麼這個指令就類似于scp,隻是scp需要加使用者名和密碼的權限驗證,而ADD不用。

文法如下:

如果把<src>寫成一個url,那麼ADD就類似于wget指令

如以下寫法都是可以的:

COPY

看這個名字就知道,又是一個複制指令

ENTRYPOINT

功能是啟動時的預設指令

與CMD比較說明(這倆指令太像了,而且還可以配合使用):

VOLUME

可實作挂載功能,可以将内地檔案夾或者其他容器種得檔案夾挂在到這個容器種

文法為:

USER

設定啟動容器的使用者,可以是使用者名或UID,是以,隻有下面的兩種寫法是正确的

WORKDIR

如:

WORKDIR也可以解析環境變量

ARG

我們可以定義一個或多個參數,如下:

也可以給參數一個預設值:

如果我們給了ARG定義的參數預設值,那麼當build鏡像時沒有指定參數值,将會使用這個預設值

ONBUILD

STOPSIGNAL

HEALTHCHECK

容器健康狀況檢查指令

文法有兩種:

[OPTIONS]的選項支援以下三中選項:

注意:

HEALTHCHECK指令隻能出現一次,如果出現了多次,隻有最後一個生效。

CMD後邊的指令的傳回值決定了本次健康檢查是否成功,具體的傳回值如下:

例子:

Docker Dockerfile詳解