Skip to content

Nuface Blog

隨意隨手記 Casual Notes

Menu
  • Home
  • About
  • Services
  • Blog
  • Contact
  • Privacy Policy
  • Login
Menu

Docker 映像檔跨機器搬移實務:是否需要一起複製底層 image?

Posted on 2025-11-052025-11-05 by Rico

在日常維運或開發中,我們常會在一台主機(例如 A 機器)上建立新的 Docker 映像檔(image),並想將它移轉到另一台主機(B 機器)使用。這時常見的疑問是:

若我在 A 機器上建立的映像 XX 是從 YY 映像衍生(FROM YY)而來,那我在複製時,是否需要把 YY 也一起複製到 B 機器?

結論先講:
👉 不需要另外拷貝 YY!


🔍 為什麼只要複製 XX 就夠?

Docker 映像是由多層(layer)組成的,XX 映像是以 YY 為基底延伸出的新層。
當你使用 docker save 將 XX 打包時,Docker 會自動包含它所依賴的所有父層(也就是 YY 的部分)。

因此,當你在另一台機器使用 docker load 匯入後,Docker 會自動還原整個映像層結構:

  • 若該機器已有部分相同的層,會自動跳過(去重處理)。
  • 若沒有,會一併匯入完整層。

💡 正確的搬移方法

方法一:使用 docker save / docker load(離線搬移)

# 在 A 機器上打包映像
docker save -o xx.tar XX:tag

# 傳送 xx.tar 到 B 機器後
docker load -i xx.tar

這樣 B 機器就會同時擁有:

  • XX 映像
  • 以及 XX 所依賴的所有父層(包含 YY)

方法二:透過私有或公有 Registry(線上搬移)

# 在 A 機器上
docker tag XX:tag my-registry.example.com/ns/xx:tag
docker push my-registry.example.com/ns/xx:tag

# 在 B 機器上
docker pull my-registry.example.com/ns/xx:tag

這樣 B 只會下載缺少的層,節省時間與頻寬,非常適合長期部署與同步。


⚠️ 常見錯誤與注意事項

  • ❌ 不要用 docker export / docker import
    這是針對「容器檔案系統」,不包含映像的層與歷史資訊。
  • ⚙️ 確認平台架構一致
    例如 linux/amd64 與 linux/arm64 之間不可直接通用。
    若要跨架構搬移,可使用: docker buildx build --platform linux/amd64,linux/arm64 ...
  • 📦 若想同時備份多個映像
    也可以一次打包: docker save YY:tag XX:tag -o both.tar

✅ 結論

在 Docker 中,映像的層會自動隨依賴關係一併打包或拉取。
因此:

只要拷貝或推送 XX 映像即可,底層的 YY 映像層會自動被包含或下載。


📘 延伸閱讀

  • Docker 官方文件:docker save
  • Docker 官方文件:docker load

Recent Posts

  • Enable Logrotate for Dovecot in Docker: Prevent Huge Log Files and Disk Overflow
  • 在 Docker Dovecot 中啟用 Logrotate:避免 log 爆量、磁碟被塞滿的最佳做法
  • How to Choose Suricata RuleSets on OPNsense — Practical Guide & Best Recommendations
  • OPNsense Suricata 使用指南 — 規則(RuleSets)該怎麼選?最佳實務與推薦設定
  • Proxmox VE + Proxmox Backup Server Integration & Cross-Node Restore Guide

Recent Comments

No comments to show.

Archives

  • November 2025
  • October 2025

Categories

  • AI
  • Apache
  • Cybersecurity
  • Database
  • DNS
  • Docker
  • Fail2Ban
  • FileSystem
  • Firewall
  • Linux
  • LLM
  • Mail
  • N8N
  • OpenLdap
  • OPNsense
  • PHP
  • QoS
  • Samba
  • Switch
  • Virtualization
  • VPN
  • WordPress
© 2025 Nuface Blog | Powered by Superbs Personal Blog theme