docker镜像分发有两种核心方式:有网络且长期使用选私有registry,无网络或临时迁移用save/load导出导入;还可通过docker hub进行公网分发,需注意版本兼容与标签规范。

把 Docker 镜像分发到多台机器,核心就两条路:有网络且长期用,走仓库;没网络或临时迁移,走文件导出导入。选哪种,主要看你的环境和频率。
用私有 Registry(适合多台机器长期共用)
在局域网里搭一个私有镜像仓库,所有机器都往这推、从这拉,省事又可控。
- 先起一个 Registry 容器(比如放在 IP 是 192.168.1.200 的机器上):
docker run -d -p 5000:5000 --name registry registry:2 - 源机器给镜像打上私有仓库标签:
docker tag myapp:v1.0 192.168.1.200:5000/myapp:v1.0 - 推送上去:
docker push 192.168.1.200:5000/myapp:v1.0 - 目标机器拉取前,得先配置允许不安全的 HTTP 仓库(因为默认是 HTTP):
编辑/etc/docker/daemon.json,加一行:"insecure-registries": ["192.168.1.200:5000"],然后重启 Docker:sudo systemctl restart docker - 最后拉取:
docker pull 192.168.1.200:5000/myapp:v1.0
用 docker save + docker load(适合离线、一次性、小批量)
不依赖网络服务,直接打包成 .tar 文件,用 U 盘、SCP 或 rsync 拷过去再加载,最简单也最常用。
- 源机器导出镜像:
docker save -o myapp-v1.0.tar myapp:v1.0
想一次导多个?可以:docker save -o all.tar myapp:v1.0 nginx:alpine redis:7 - 拷到目标机器(比如用 SCP):
scp myapp-v1.0.tar user@192.168.1.100:/tmp/ - 目标机器加载:
docker load -i /tmp/myapp-v1.0.tar - 大镜像建议先压缩:
导出后运行gzip myapp-v1.0.tar,传.tar.gz,目标机先gunzip再docker load
用公共仓库(比如 Docker Hub,适合对外发布或跨公网)
如果你的镜像不敏感、需要公开或跨互联网分发,Docker Hub 是最省心的选择。
- 先登录:
docker login - 打带用户名的标签(比如你的账号是 myuser):
docker tag myapp:v1.0 myuser/myapp:v1.0 - 推送:
docker push myuser/myapp:v1.0 - 其他机器直接拉:
docker pull myuser/myapp:v1.0 - 注意:避免用
latest标签做关键部署,推荐明确写版本号,比如v1.0.2
补充建议
不管选哪种方式,记得统一镜像命名规范,比如 myapp:1 指向 1.x 最新版,myapp:1.2 指向 1.2.x 最新版,这样升级和回滚都清楚。另外,两台机器的 Docker 版本别差太多,尤其低于 20.10 的旧版本加载新格式镜像可能失败。











