13、Docker構建鏡像之Dockerfile
1、Dockerfile是什么
Dockerfile是Docker鏡像的構建文件,它包含了一系列指令和參數,用于定義如何構建一個Docker鏡像。通過Dockerfile,我們可以將應用程序和其依賴的組件打包到一個獨立的鏡像中,方便在不同環境中部署和運行。
2、使用Dockerfile的好處
重復性
:Dockerfile可以定義應用程序鏡像的構建過程,從而實現鏡像構建的重復性和可預測性。使用Dockerfile可以確保在不同的環境中生成相同的鏡像,避免了手動配置和部署帶來的不確定性和錯誤。
可維護性
:Dockerfile是一種文本文件,易于維護和管理。通過Dockerfile,我們可以記錄和跟蹤應用程序的構建過程,便于排查和解決問題。
可分享性
:Dockerfile可以用于構建鏡像,并將鏡像分享給其他人使用。通過Dockerfile,其他人可以輕松地了解鏡像的構建過程,并根據需要進行修改和定制。
可擴展性
:Dockerfile可以通過多個層次的構建過程實現鏡像的分層管理。通過分層管理,我們可以在應用程序鏡像中定制不同的組件和版本,便于應對不同的需求和場景。
3、Dockerfile的組成
Dockerfile由一行行命令語句組成,并且支持以#
開頭的注釋行。 一般而言,Dockerfile可以分為四部分
- 基礎鏡像信息
- 維護者信息
- 鏡像操作指令
- 啟動時執行指令
4、Dockerfile指令一覽表
指令 | 說明 |
---|---|
FROM | 指定基礎鏡像 |
MAINTAINER | 指定維護者信息,已經過時,可以使用LABEL maintainer=xxx 來替代 |
LABEL | 指定維護者信息 maintainer=xxx auth=xueqimiao a=b (語法 k=v ) |
RUN | 運行命令 代表鏡像構建過程中運行的命令 |
CMD | 指定啟動容器時默認的命令 容器啟動時要執行的命令 |
ENTRYPOINT | 指定鏡像的默認入口.運行命令 |
EXPOSE | 聲明鏡像內服務監聽的端口 |
ENV | 指定環境變量,可以在docker run的時候使用-e改變 會被固話到image的config里面 |
ADD | 復制指定的src路徑下的內容到容器中的dest路徑下,src可以為url會自動下載,可以為tar文件,會自動解壓 |
COPY | 復制本地主機的src路徑下的內容到鏡像中的dest路徑下,但不會自動解壓等 |
LABEL | 指定生成鏡像的元數據標簽信息 |
VOLUME | 創建數據卷掛載點 |
USER | 指定運行容器時的用戶名或UID |
WORKDIR | 配置工作目錄,為后續的RUN、CMD、ENTRYPOINT指令配置工作目錄 |
ARG | 指定鏡像內使用的參數(如版本號信息等),可以在build的時候,使用–build-args改變 |
OBBUILD | 配置當創建的鏡像作為其他鏡像的基礎鏡像是,所指定的創建操作指令 |
STOPSIGNAL | 容器退出的信號值 |
HEALTHCHECK | 健康檢查 |
SHELL | 指定使用shell時的默認shell類型 |