docker容器commit的鏡像越來越大怎么辦?醬紫試試


使用docker經常會遇到這樣的問題,基礎鏡像幾百兆,在容器中安裝了幾個軟件,然后commit到鏡像。后來刪除了一些內容,再次commit成鏡像。發現。根本不會變小,而且會越來越大。

其實,commit,顧名思義,就是把當次的修改提交。體現在docker鏡像中,就是新的一層。

imagepng

在 Dockerfile 中, 每一條指令都會創建一個鏡像層,繼而會增加整體鏡像的大小。而commit也是層的增加。

這其實也很好理解,例如git,你對某個文件增加了一行,又刪除了一這一行,雖然最新版文件看起來沒有了,但其實歷史還是被記錄下來。

手里的這個環境並沒有原始的Dockerfile,並不知道從第一版到現在做了什么。所以干脆從零開始,把當前的容器直接做成基礎鏡像

不在廢話,直接開始:

  1. 查看當前目錄,刪除不需要內容(容器中)

    #進入根目錄
    cd / 
    #查看各個目錄體積
    du -h -d 1
    
  2. 一頓刪除操作猛如虎

  3. 打包當前容器

    # 根目錄下:
    tar --exclude=/proc --exclude=/sys --exclude=base_img.tar -cvf base_img.tar .
    
  4. 退出容器,拷貝壓縮包

    # 退出
    exit
    
    # copy
    docker cp [容器id]:/base_img.tar .
    
  5. 導入容器

    # 導入
    cat base_img.tar|docker import - base_img
    
  6. 對比:

    # 直觀上體積減少了
    docker images
    
    # history,只有一個記錄:Imported from -
    docker history [新鏡像id]
    
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM