首页主机资讯Docker镜像如何在Ubuntu间共享

Docker镜像如何在Ubuntu间共享

时间2026-01-18 08:21:04发布访客分类主机资讯浏览685
导读:在 Ubuntu 主机间共享 Docker 镜像的常用方式 离线导出导入:使用 docker save/load 将镜像保存为 .tar 文件,通过 scp/rsync/USB 拷贝到目标机器后导入。适合一次性迁移、无公网/内网仓库的场景...

在 Ubuntu 主机间共享 Docker 镜像的常用方式

  • 离线导出导入:使用 docker save/load 将镜像保存为 .tar 文件,通过 scp/rsync/USB 拷贝到目标机器后导入。适合一次性迁移、无公网/内网仓库的场景。
  • 私有镜像仓库:在局域网或云上运行 registry:2,源机 docker tag + docker push,目标机 docker pull。适合团队/多机长期协作与版本管理。
  • 公共或云仓库:推送到 Docker HubGitHub Container Registry(GHCR),跨公网分发、权限可控。
  • 补充:若只是共享数据而非镜像,可用 SMB/NFS 挂载卷;涉及权限时需对齐 UID/GID 与共享配置。

方式一 离线导出导入 save/load

  • 在源主机导出镜像
    • 命令:docker save -o myimage.tar myimage:latest
  • 拷贝到目标 Ubuntu
    • 命令:scp myimage.tar user@target:/tmp/
  • 在目标主机导入
    • 命令:docker load -i /tmp/myimage.tar
  • 验证
    • 命令:docker images | grep myimage
  • 说明
    • 适合无网络或临时迁移;镜像层会被完整打包,体积较大时可先压缩为 .tar.gz 再传输。

方式二 使用私有镜像仓库 registry2

  • 启动私有仓库(在任一台 Ubuntu 上)
    • 命令:docker run -d -p 5000:5000 --name registry registry:2
  • 源主机打标签并推送
    • 命令:
      • docker tag myimage:latest 192.168.1.10:5000/myimage:latest
      • docker push 192.168.1.10:5000/myimage:latest
  • 目标主机拉取
    • 若仓库使用 HTTP 或自签名证书,需在目标机编辑 /etc/docker/daemon.json 添加:
      • { “insecure-registries”: [“192.168.1.10:5000”]}
    • 重启 Docker:systemctl restart docker
    • 拉取:docker pull 192.168.1.10:5000/myimage:latest
  • 说明
    • 局域网内分发效率高、可版本化管理;生产建议启用 TLS

方式三 使用公共或云仓库 Docker Hub 与 GHCR

  • Docker Hub
    • 登录:docker login
    • 打标签:docker tag myimage:latest 用户名/myimage:latest
    • 推送:docker push 用户名/myimage:latest
    • 目标机:docker pull 用户名/myimage:latest
  • GitHub Container Registry(GHCR)
    • 登录:docker login ghcr.io -u 用户名 -p 个人访问令牌(PAT)
    • 打标签:docker build -t ghcr.io/用户名/镜像名:版本 .
    • 推送:docker push ghcr.io/用户名/镜像名:版本
    • 权限:在 GitHub 的 Packages 设置中设为 Public/Private;私有镜像在生产机需再次登录 ghcr.io 后拉取。
  • 说明
    • 适合跨公网协作与 CI/CD;GHCR 支持细粒度权限与自动化发布。

常见问题与建议

  • 镜像体积较大时,导出为 .tar.gz 可显著减少传输时间;导入前先解压为 .tar 再执行 docker load
  • 使用私有仓库且为 HTTP 时,目标机必须配置 insecure-registries,否则会报连接被拒绝或证书错误。
  • 若需要共享的是数据而非镜像,使用 SMB/NFS 挂载卷,并通过 –user UID:GID 或共享端权限设置解决访问问题。
  • 跨主机容器通信与镜像共享是不同问题;如需容器互通,需额外配置 Docker 网络(如调整 docker0 网段、路由或覆盖网络)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Docker镜像如何在Ubuntu间共享
本文地址: https://pptw.com/jishu/784011.html
如何在Ubuntu中构建自定义Docker镜像 Docker在Ubuntu中如何管理镜像

游客 回复需填写必要信息