在使用Docker 構建鏡像時,Dockerfile 中有一些指令是用于緩存的,這些指令可以提高構建速度和減少網絡資源的使用。
# 例如,COPY 指令可以將本地文件復制到鏡像中, # 如果復制的文件沒有發生變化,則可以利用緩存,加速構建過程。 COPY src/ /app/src/
當文件發生變化時,Docker 會從這個指令開始,重新構建整個鏡像。
# 還有一些其他用于緩存的指令,比如 ADD、RUN、COPY --chown 等。 # RUN 指令可以執行 shell 命令或者安裝軟件包,這些操作可能需要大量時間來完成。 RUN apt-get update && apt-get install -y \ gcc \ make \ vim
為了最大化利用緩存,可以將經常變化的步驟放到 Dockerfile 的最后,這樣 Docker 在重新構建鏡像時可以復用先前的層。
# 比如在應用程序依賴庫沒有發生變化時,可以只構建這個鏡像層, # 而跳過應用程序本身的構建,從而加速構建速度。 # 另外使用了緩存,Docker 將不會重新下載庫包, # 從而加快構建速度,降低網絡資源的使用。 FROM python:3.8.5-slim-buster AS app WORKDIR /app COPY requirements.txt /app/ RUN pip install --no-cache-dir -r requirements.txt
這里的 FROM 等價于 Dockerfile 的開頭,在使用該方式構建 Docker 鏡像時,只需傳入最新的代碼即可。