欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在沒有Docker緩存的情況下構建鏡像的方法分享

 更新時間:2023年07月19日 11:42:49   作者:托兒所夜十三  
這篇文章主要給大家介紹了如何在沒有Docker緩存的情況下構建鏡像的解決方法,文章通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下

盡可能快地構建 Docker 鏡像至關重要。構建映像的速度越快,測試并將其部署到生產(chǎn)環(huán)境的速度就越快。Docker 的構建緩存是通過重用以前構建的層來加速構建的好方法。

Docker 緩存的工作原理

Docker 構建緩存最好被視為從 Dockerfile 頂部到底部的堆棧。給定這樣的 Dockerfile:

FROM node:16
RUN apt-get update && apt-get install -y curl
WORKDIR /app
COPY package.json package-lock.json /app/
RUN npm install
COPY . .
RUN npm build

Dockerfile中的每一行都是Docker鏡像構建過程中的一步,會在鏡像中創(chuàng)建一個層。這些層從上到下堆疊,形成最終的Docker鏡像。

這種繼承關系構成了Docker層緩存的骨架。當你使用docker build命令構建鏡像時,Docker會按照從上到下的順序執(zhí)行每一步。在執(zhí)行每個步驟時,它會檢查是否已經(jīng)有了該步驟的層。如果該步驟自上次構建以來沒有改變,緩存中就已經(jīng)存在該層,不需要重新構建。

如果該步驟已經(jīng)改變(例如我們在COPY . .中更改了源代碼),層緩存中就沒有匹配項,需要重新構建該步驟。

如果你已經(jīng)清除了本地Docker層緩存,該步驟也可能不在緩存中存在。

docker build過程中使用層緩存,是為什么步驟的順序非常重要。如果你更改了某個步驟,所有位于該步驟下方的步驟都需要重新構建。

使用以下命令構建沒有緩存的鏡像--no-cache

但是,有時,您想要構建沒有緩存的圖像。您可能正在調(diào)試構建問題并希望從頭開始?;蛘吣赡芟霃娭粕壱蕾図?。無論出于何種原因,您都可以使用該選項構建沒有緩存的圖像--no-cache。

docker build --no-cache .

該標志告訴 Docker 守護進程在 a 期間跳過緩存docker build并運行 Dockerfile 中的每個步驟。它會導致構建速度變慢,但會確保您運行每一步。指定--no-cache有助于調(diào)試構建問題。您還可以使用它來強制升級依賴項,就像curl上面一樣apt-get install。

該參數(shù)告訴Docker守護進程在docker build期間跳過緩存,并運行Dockerfile中的每個步驟。這會導致構建速度較慢,但可以確保運行每個步驟。指定--no-cache對于調(diào)試構建問題非常有幫助。你也可以使用它來強制升級依賴項,例如我們在上面的apt-get install -y curl

在特定位置使使緩存失效

有時候你需要在Dockerfile的特定位置使緩存失效。例如,你可能想在npm install步驟之后使緩存失效,以便調(diào)試npm build步驟。你可以使用ARG指令來實現(xiàn)這個技巧。我們可以在npm build命令之前在Dockerfile中添加一個ARG STOP=1步驟。當我們更改它的值時,這會導致緩存在該行失效。

...
COPY . .
ARG STOP=1
RUN npm build

現(xiàn)在,當你運行docker build時,你會發(fā)現(xiàn)在構建步驟運行之前,緩存會被失效。你可以通過更改值再次使其失效。你可以在Dockerfile內(nèi)部更改它,也可以在調(diào)用docker build時使用構建參數(shù)來更改它。

docker build --build-arg STOP=2 .

小結

Docker構建緩存是通過重用以前構建的層來加速構建的一種很好的方式。盡可能地優(yōu)化使用層緩存最終會加速Docker構建。

但有時候,你想在沒有Docker緩存的情況下構建鏡像。使用--no-cache選項將強制Docker守護進程在構建過程中運行Dockerfile中的每個步驟。它有助于調(diào)試構建問題或強制升級操作系統(tǒng)依賴項。

Docker構建緩存對于構建Docker鏡像至關重要。還有其他基本技巧可以使你的Docker構建速度更快。

到此這篇關于在沒有Docker緩存的情況下構建鏡像的方法介紹的文章就介紹到這了,更多相關Docker緩存構建鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于Docker搭建Graylog分布式日志采集系統(tǒng)的詳細過程

    基于Docker搭建Graylog分布式日志采集系統(tǒng)的詳細過程

    Graylog是一個開源的日志管理工具,支持日志收集、解析、存儲、搜索和可視化,它可以從各種數(shù)據(jù)源收集日志,并通過內(nèi)置的解析器將日志格式化,本文介紹基于Docker搭建Graylog分布式日志采集系統(tǒng),感興趣的朋友一起看看吧
    2025-02-02
  • docker安裝nginx容器的方法

    docker安裝nginx容器的方法

    Nginx也是一款服務器,我們常用它做如:反向代理、負載均衡、動態(tài)與靜態(tài)資源的分離的工作,這篇文章主要介紹了docker安裝nginx,需要的朋友可以參考下
    2023-01-01
  • 在Dockerfile中copy和add的區(qū)別及說明

    在Dockerfile中copy和add的區(qū)別及說明

    COPY和ADD都是Dockerfile中用于文件復制的命令,但COPY僅用于本地文件或目錄的復制,不支持自動解壓縮;而ADD除了復制本地文件或目錄外,還支持解壓縮和從URL下載文件,在一般情況下,建議使用COPY命令
    2025-03-03
  • 使用docker部署hbase的方法

    使用docker部署hbase的方法

    這篇文章主要介紹了使用docker部署hbase的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Docker安裝Redis并使用Another?Redis?Desktop?Manager連接的方法

    Docker安裝Redis并使用Another?Redis?Desktop?Manager連接的方法

    Redis?是一個使用C語言編寫的、開源的(遵守?BSD?協(xié)議)、高性能的、支持網(wǎng)絡、可基于內(nèi)存亦可持久化的日志型、Key-Value的NoSQL數(shù)據(jù)庫,這篇文章主要介紹了Docker安裝Redis并使用Another?Redis?Desktop?Manager連接,需要的朋友可以參考下
    2022-09-09
  • 詳解使用export/import導出和導入docker容器

    詳解使用export/import導出和導入docker容器

    本篇文章主要介紹了詳解使用export/import導出和導入docker容器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Docker 教程之倉庫配置文件詳解

    Docker 教程之倉庫配置文件詳解

    這篇文章主要介紹了Docker 教程之倉庫配置文件詳解的相關資料,需要的朋友可以參考下
    2016-12-12
  • 使用Docker多階段構建來減小鏡像大小的方法

    使用Docker多階段構建來減小鏡像大小的方法

    這篇文章主要介紹了使用Docker多階段構建來減小鏡像大小的方法,適用于需要在 Dockerfile 中構建程式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 修改Docker默認存儲路徑的步驟詳解

    修改Docker默認存儲路徑的步驟詳解

    隨著Docker技術的廣泛應用,它極大地簡化了復雜項目的部署與維護流程,僅憑單一鏡像即可輕松運行,然而,隨著數(shù)據(jù)量不斷增長,Docker的默認數(shù)據(jù)存儲方式可能逐漸成為挑戰(zhàn),本文給大家介紹了如何修改Docker默認存儲路徑,解決系統(tǒng)盤占用90%+問題,需要的朋友可以參考下
    2024-09-09
  • 谷歌技術人員解決Docker鏡像體積太大問題的方法

    谷歌技術人員解決Docker鏡像體積太大問題的方法

    這篇文章主要介紹了谷歌技術人員解決Docker鏡像體積太大問題的方法,涉及虛擬機,谷歌docker鏡像構建實踐及構建工具bazel的介紹等相關內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11

最新評論