Dockerfile 指令詳解

使用Dockerfiledocker

docker build [選項] <上下文路徑/URL/->shell

其餘構建方法ide

直接用Git repo 進行構建工具

用給定的tar壓縮包構建ui

從標準輸入中讀取Dockerfile進行構建spa

從標準輸入中讀取上下文壓縮包進行構建進程


FROM指定基礎鏡像ip

是必備指令,必須是第一條指令it

FROM就是指定基礎鏡像自動化


LABEL

鏡像添加標籤來幫助組織鏡像、記錄許可信息、輔助自動化構建等

一個鏡像能夠包含多個標籤,但建議將多個標籤放入到一個 LABEL 指令中


RUN 執行指令

  • shell 格式 RUN 命令

  • exec格式 RUN ["可執行文件","參數1","參數2"]

支持Shell類的行尾添加 \ 的命令換行 首位#進行註釋

最後添加清理工具的命令,刪除爲了編譯所構建所需的軟件


COPY複製文件

  • COPY <源路徑>...<目標路徑>

  • COPY ["<源路徑1>",..."<目標路徑>"]


ADD更加高級的複製文件

<源路徑> 能夠是一個URL,這種狀況下會去下載這個連接文件放到<目標路徑>去,並設置文件權限爲600

若是<源路徑> 爲一個tar 壓縮文件的話,壓縮格式爲gzip,bzip2以及xz


CMD容器啓動命令 (只可出現一次)

  • shell 格式 CMD <命令>

  • exec 格式 CMD ["可執行文件","參數1","參數2"....]

  • 參數列表格式 CMD ["參數1","參數2"... ]. 在指定了ENTRYPOINT指令後,用CMD指定具體的參數

CMD指令就是用於指定默認的容器主進程的啓動命令

在運行時能夠指定新的命令來替代鏡像設置中的這個默認名利

shell格式 至關於 exec格式 CMD ["sh","-c","shell 命令"]


ENTRYPOINT 入口點(只可出現一次)

是將CMD的內容做爲參數傳給ENTRYPOINT

<ENTRYPOINT> "<CMD>"

  • 使用CMD時加個參數可能會遇到報錯 但願在容器運行,就必須從新輸入完整命令

使用ENTRYPOINT 就能夠避免

  • 啓動容器就是啓動主進程,有些時候,啓動主進程前,須要一寫準備工做

能夠將這些預處理的工做寫成一個腳本,放在ENTRYPOINT中執行


ENV 設置環境變量

  • ENV <key><value>

  • ENV <key1>=<value1><key2>=<value2>

定義了環境變量,那麼在後續的指令中,就可使用這個環境變量。


ARG 構建參數

ARG <參數名> [=< 默認值>]

構建參數和ENV 的效果同樣,都是設置環境變量

ARG所設置的構建環境的環境變量,在未來容器運行時是不會存在這些環境變量的


VOLUME 定義匿名卷

VOLUME ["<路徑1>","<路徑2>"...]

VOLUME <路徑>

事先制定某些目錄掛載爲匿名卷


EXPOSE 聲明端口

EXPOSE <端口1>[<端口2>...]

聲明運行容器提供服務端口。

-p 是映射宿主機端口和容器端口,就是將容器對應端口服務公開給外界訪問

EXPOSE僅僅是聲明容器打算使用什麼端口


WORKDIR 指定工做目錄

WORKDIR <工做目錄路徑>

WORKDIR 指令能夠來指定工做目錄(當前目錄)目錄不存在,會自動創建


USER 指定當前用戶

USER <用戶名>

切換到指定用戶,這個用戶必須是事先創建好的,不然沒法切換


HEALTHCHECK 健康檢查 (只可出現一次)

HEALTHCHECK [選項] CMD <命令> 設置檢查容器健康狀態的命令

HEALTHCHECK NONE 屏蔽掉基礎鏡像健康檢查指令

設置好後 啓動容器,初始狀態爲starting 在指令檢查成功後 變爲 healthy 有必定次數失敗變爲unhealthy

--interval=<間隔> 兩次健康檢查的間隔,默認30S

--timeout=<時長> 健康檢查命令運行超時時間,若是超過這個時間,本次健康檢查就被視爲失敗,默認30秒

--retries=<次數> 當連續失敗指定次數後,則將容器是爲unhealthy,默認3次

分爲 shell 格式 和 exec 格式

命令的返回值決定健康檢查的成功與否 0:成功 1:失敗 2:保留


ONBUILD 爲他人作嫁衣

ONBUILD <其它指令> 好比 RUN COPY  等

在當前鏡像構建時並不會被執行,只有被當成基礎鏡像去構建下一級鏡像的時候纔會被執行

相關文章
相關標籤/搜索