Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

chown 在 docker image size 上的影響

Posted on 2022 年 8 月 15 日2022 年 8 月 16 日 By 日落 在〈chown 在 docker image size 上的影響〉中有 2 則留言

docker build 會將每個動作建立一個 image layer,好處就是相同的動作所建立 image layer 都可以重複使用,僅有新的動作會增加新的 image layer。

不過 chown 會讓 docker 將檔案判定為新的檔案,而另外新增一個 layer,導致 image size 增加。

以下是一個小實驗,其中 test.img 為 512MB 的檔案:

FROM ubuntu:20.04

# test:512-file
COPY test.img /var/

# test:512-chown
RUN chown www-data:www-data /var/test.img

然後針對第二、第三個指令分別 build -t 以後,透過 docker images 列出 images 和他的大小:

test       512-chown       02367f2a3158   4 seconds ago        1.15GB
test       512-file        965cb380f042   41 seconds ago       610MB

經過 chown 的 test.img 被 docker 判斷為新的檔案,因此多了一個 image layer 來儲存異動,image 就整整多了 512MB,這對建立 docker image 來說儲存、傳輸成本會大很多。

目前看到比較好的解法,是使用 COPY --chown 直接指定檔案的 owner,這樣異動就會放在同一個 image layer。

Tags:Docker

文章導覽

Previous Post: Ubuntu 22.04.1 released
Next Post: 清空 Windows 10 中 GPU 的記憶體

Comments (2) on “chown 在 docker image size 上的影響”

  1. 日落表示:
    2022 年 9 月 9 日14:25

    先 touch & chmod,在 copy 覆蓋 touch 出來的檔案,說不定可以避開這個問題 (不確定)

    回覆
  2. 日落表示:
    2022 年 9 月 22 日15:40

    測試了上面的方法,確定沒有用。

    雖然先 chmod,但是在 COPY 檔案進去以後,權限就會被 COPY 進去的檔案覆蓋掉 ….

    回覆

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.