跳转至

没有Docker仓库还能分发镜像吗?


2016-03-08 by dongnan

导入与导出

首先明确的是建议优先使用Docker仓库,特别是对于Docker集群而言 Docker仓库非常重要,但是某些应用场景下比如单机环境下使用docker-compse编排应用,如果没有镜像仓库是不是就不能把docker镜像分发给其它的主机了呢?

答案是否定的,对于这种单机或者小规模环境,我们可以使用 docker savedocker load 命令来完成镜像的分发,甚至通过Linux ssh 与管道技术相结合,可以直接把镜像分发给目标主机。

总而言之当遇到上述环境而且没有镜像仓库时,需要把一台机器上的镜像拷贝到另一台机器,试试 docker savedocker load 命令吧。

举个栗子

  • HOST A 导出并压缩docker 镜像
docker save  centos | gzip > img-centos.tar.gz
scp img-centos.tar.gz root@hostb:/root/
  • HOST B 导入镜像
gzip -dc img-centos.tar.gz | docker load

批量操作

如果你需要批量导出/导入镜像,可以结合shell 命令与管道完成。

批量导出

for i in `docker images | awk '/irm/ {print $3}'`;do echo $i ; docker save $i | gzip > ${i}.gz ;sleep 2 ;done

其中awk 匹配镜像名称的关键字,print $3 输出第三个字段也就是镜像ID。

批量导入

for i in `ls`; do echo $i; gzip -dc $i | docker load ; sleep 5;done

命令帮助

  • save 命令
  • load命令

扩展

结合 ssh 与 pv 命令的话,利用 Linux强大的管道,只用一个命令完成从一个机器将镜像分发到另一台机器。

注意 pv 命令用于显示进度条,你可能需要单独安装这个命令。

回到页面顶部