2025年8月25日 星期一

Docker Save & Load command by (commit container )

 你可以使用 docker save 指令將一個或多個 Docker 映像儲存為一個單一的 .tar 歸檔檔案。這個歸檔檔案包含了映像的所有層和中繼資料,方便你在沒有 Docker Registry 的環境下傳輸、備份或分享映像。

目的是備份在容器內對 ROS2 程式碼或組態檔所做的修改

  • 最佳做法:應該將程式碼放在 Volume 中,然後備份 Volume 即可。

  • 替代做法:如果您是在容器內直接修改,建議您先使用 docker commit 將容器的修改保存為一個新的鏡像,然後再用 docker save 匯出這個鏡像.tar 檔案。這樣才能保留完整的環境配置和元數據,以便未來準確重建環境。

# 1. 將容器修改提交成新的 Image
docker commit my_amr_container my_amr_amr_image:v1.0

# 2. 匯出這個 Image 為 tar 檔案 (這是更推薦的備份方式)
docker save -o my_amr_image_v1.0.tar my_amr_amr_image:v1.0

指令格式

docker save 的基本格式如下:

docker save [選項] <映像名稱> -o <輸出檔名>

docker save [選項] <映像名稱> > <輸出檔名>

常用選項

  • -o--output:將輸出寫入指定的檔案,而不是標準輸出。

  • <映像名稱>:要儲存的 Docker 映像名稱和標籤(例如 osrf/ros:humble-desktop-full)。

  • > <輸出檔名>:使用標準輸出重新導向的方式將歸檔內容寫入檔案。


使用範例

假設你想要將我們之前使用的 ros2_humble_gz_rviz_gpu/20250731 映像儲存為一個 .tar 檔案,你可以這樣做:

# 儲存單一映像
docker save ros2_humble_gz_rviz_gpu/20250731 -o ros2_dev_image.tar

如果你想將多個映像一起儲存,只需在指令中列出它們:


# 儲存多個映像
docker save ros2_humble_gz_rviz_gpu/20250731 my_custom_app:latest -o my_images.tar

如何載入儲存的映像

當你在另一台機器上,你可以使用 docker load 指令來載入這個 .tar 歸檔檔案,並將映像重新添加到本地的 Docker 映像列表中。

# 從歸檔檔案載入映像
docker load -i ros2_dev_image.tar

-------------------------

您可以將名為 ros2dev 的運行中 Docker 容器存入為一個新的映像,然後再將其保存到檔案中。

這是一個兩步過程:

  1. 將容器提交(Commit)為映像 使用 docker commit 指令將容器 ros2dev 的當前狀態儲存為一個新的映像。

    docker commit ros2dev my_ros2dev_image:latest
    

    這個指令會創建一個名為 my_ros2_image 的新映像,其中包含了您在容器內所做的所有更改和安裝。

  2. 將映像保存到檔案 使用 docker save 指令將新創建的映像儲存為一個 .tar 歸檔檔案。

    docker save my_ros2dev_image:latest -o ros2dev_image.tar
    

    這個 ros2dev_image.tar 檔案就是 ros2dev 容器的完整備份,您可以在沒有 Docker Registry 的情況下輕鬆地將其備份、分享或傳輸到其他機器上。


================================
tar gz command
.tar.gz
套件名稱:gzip。

壓縮:
$ tar zcvf FileName.tar.gz DirName

解壓縮:
$ tar zxvf FileName.tar.gz


.tar (僅打包,無壓縮)
套件名稱:tar。
打包:
$ tar cvf FileName.tar DirName
解包:
$ tar xvf FileName.tar


.gz
套件名稱:gzip。
壓縮
$ gzip FileName
解壓縮 1:
$ gunzip FileName.gz
解壓縮 2:
$ gzip -d FileName.gz

沒有留言:

張貼留言