iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
自我挑戰組

技術隨筆系列 第 9

沒有 docker registry 要怎麼保存 image? - 低配版 docker image 管理方法

  • 分享至 

  • xImage
  •  

有些專案環境的 docker 沒有使用 registry 保存 image,即使按照 dockerFile 也不能保證建立的 image 完全一致,或者單純想要備份 image。可以參考以下作法

使用 docker save/load image 保存載入映像檔

  1. docker image ls 列出 image,選擇需要保存的 IMAGE ID 或是 REPOSITORY:TAG 組合

  2. docker save -o {image.tar} {IMAGE ID or REPOSITORY:TAG} 將 image 保存為 tar 檔案
    如果覺得 tar 檔案太大可以使用 docker save {IMAGE ID or REPOSITORY:TAG} | gzip > {image.tar.gz} 輸出 gzip 壓縮過的 tar 檔案
    (可選) 如果 TAG 是 latest 的話,可以使用 docker tag {IMAGE ID} {REPOSITORY:TAG} 指令建立一個容易識別的 TAG 名稱

  3. docker load -i {image.tar} 將 tar 檔案載入為 docker image

同場加映:在 image 缺失的狀況下,從 container 還原輕量的 image

啊杯具,連 image 也被砍掉,只剩下 container 怎麼辦?那只好採用 plan B 了

  1. docker container ls 列出 container,選擇需要保存的 CONTAINER ID 或是 NAME

  2. docker export {CONTAINER ID or NAME} > {container.tar} 將 image 保存為 tar 檔案
    輸出 gzip 壓縮過的 tar 檔案,指令為 docker export {CONTAINER ID or NAME} | gzip > {container.tar.gz}

  3. docker import {container.tar.gz} 將 container.tar.gz 的內容轉變為 image (不是 container)

需要特別注意的地方是此作法是以 container 產出的檔案建立輕量的 image,沒辦法保存完整的 image 資訊,只能當作下下策。
在一些比較極端的 image 管理策略下,可能會為了減少最終 image 的容量大小而選擇 docker export 的作法,但這樣會犧牲原本的 image 建構歷史紀錄,見仁見智


參考資料:


上一篇
網站調研工具組
下一篇
資料同步的實作選擇
系列文
技術隨筆30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言