如何将Docker镜像从一台主机复制到另一台上而不需要通过存储库?

如何在不使用存储库的情况下将Docker镜像从一台机器转移到另一台机器,无论是私有还是公共?

我习惯在virtualbox上播放和创build我自己的图像,当它完成时,我尝试部署到其他机器上以实际使用。

由于它基于自己的映像(如redhat),所以不能从Dockerfile重新创build。

有没有简单的命令我可以使用? 还是另一种解决方

更新看来保存/导出可以达到类似的目的,请参阅在Docker中保存和导出有什么区别? ,我更喜欢我的情况save命令。

您将需要将泊坞窗图像保存为tar文件:

 docker save -o <save image to path> <image name> 

然后使用常规的文件传输工具(如cpscp将图像复制到新系统。 之后,您将不得不将图像加载到docker中:

 docker load -i <path to image tar file> 

PS:你可能需要sudo所有的命令。

通过SSH传输一个Docker镜像,即时将内容进行压缩:

 docker save <image> | bzip2 | \ ssh user@host 'bunzip2 | docker load' 

pv放在pipe道中间,看看转移是如何进行的,这也是一个好主意:

 docker save <image> | bzip2 | pv | \ ssh user@host 'bunzip2 | docker load' 

要将图像保存到任何文件path或共享nfs,请参阅以下示例。

通过这样做获取图像ID:

 sudo docker images 

假设你有图像ID“matrix数据”

用ID保存图片:

 sudo docker save -o /home/matrix/matrix-data.tar matrix-data 

将path复制到任何主机现在使用以下命令导入到本地泊坞窗:

 sudo docker load -i <path to copied image file> 

希望这个做得更清楚。

谢谢

首先将docker图像保存到一个zip文件

 docker save <docker image name> | gzip > <docker image name>.tar.gz 

然后使用下面的命令将导出的图像加载到docker

 zcat <docker image name>.tar.gz | docker load 

对于一个容器文件系统的展开导出,使用;

docker export CONTAINER_ID > my_container.tar

使用cat my_container.tar | docker import - cat my_container.tar | docker import -导入所述图像。

在使用docker-machine时,可以执行docker $(docker-machine config <mach1>) save <image> | docker $(docker-machine config <mach2>) load docker $(docker-machine config <mach1>) save <image> | docker $(docker-machine config <mach2>) loadmach1mach2之间复制映像。

当然,你也可以在中间贴上pv ,以获得一个progess指标:

docker $(docker-machine config <mach1>) save <image> | pv | docker $(docker-machine config <mach2>) load docker $(docker-machine config <mach1>) save <image> | pv | docker $(docker-machine config <mach2>) load

您也可以省略其中一个docker-machine config子shell,以使用您当前的默认docker-host。

docker save <image> | docker $(docker-machine config <mach>) load docker save <image> | docker $(docker-machine config <mach>) load ,将当前docker-host的图像复制到mach

要么

docker $(docker-machine config <mach>) save <image> | docker load docker $(docker-machine config <mach>) save <image> | docker loadmach复制到当前docker主机。

所有其他答案是非常有帮助的。 我只是遇到了同样的问题,并找出了一个简单的方式与docker machine scp

由于docker机v0.3.0,scp被引入从一个docker机复制文件到另一个。 如果您希望将文件从本地计算机复制到远程Docker机器(如AWS EC2或Digital Ocean),这非常方便,因为Docker机器正在为您处理ssh证书。

  1. 使用docker save保存你的图像docker save像:

    docker保存-odocker-image.tar app-web

  2. 使用docker-machine scp复制图像

    docker-machine scp ./docker-images.tar remote-machine:/ home / ubuntu

假设你的远程docker机器是remote-machine ,你想要tar文件的目录是/home/ubuntu

  1. 加载docker图像

    docker-machine ssh remote-machine sudo docker load -i docker-images.tar

docker images

查看主机上的图像列表。 假设你有一个叫做awesomesauce的图像。 在您的terminal中, cd到您要将图像导出到的目录。 现在运行:

docker save awesomesauce:latest > awesomesauce.tar

将tar文件复制到一个拇指驱动器或其他东西,然后将其复制到新的主机。

现在从新的主机做到:

 docker load < awesomesauce.tar 

现在去喝咖啡,阅读黑客新闻…

我假设你需要保存有一个图像编号为7ebc8510bc2c的couchdb-cartridge:

 stratos@Dev-PC:~$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE couchdb-cartridge latest 7ebc8510bc2c 17 hours ago 1.102 GB 192.168.57.30:5042/couchdb-cartridge latest 7ebc8510bc2c 17 hours ago 1.102 GB ubuntu 14.04 53bf7a53e890 3 days ago 221.3 MB 

将archiveName图像保存到一个tar文件。 我将使用/media/sf_docker_vm/来保存图像。

 stratos@Dev-PC:~$ docker save imageID > /media/sf_docker_vm/archiveName.tar 

将archivename.tar文件复制到新的Docker实例中,使用您环境中的任何方法,例如FTPSCP等。

在新的Docker实例上运行docker load命令并指定映像tar文件的位置。

 stratos@Dev-PC:~$ docker load < /media/sf_docker_vm/archiveName.tar 

最后,运行docker images命令来检查映像是否可用。

 stratos@Dev-PC:~$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE couchdb-cartridge latest 7ebc8510bc2c 17 hours ago 1.102 GB 192.168.57.30:5042/couchdb-cartridge latest bc8510bc2c 17 hours ago 1.102 GB ubuntu 14.04 4d2eab1c0b9a 3 days ago 221.3 MB 

请find这个详细的职位 。

要将图像从本地泊坞窗传输到minikube虚拟机:

 docker save <image> | (eval $(minikube docker-env) && docker load) 

这是如何移动两个远程寄存器/存储库之间的docker图像工作与Docker version 1.10.2, build c3959b1

 docker pull source-registry.com/myProject/myImageName:1.0.0 docker tag source-registry.com/myProject/myImageName:1.0.0 target-remote-registry.com/myProject/myImageName:1.0.0 docker push target-remote-registry.com/myProject/myImageName:1.0.0 

如果要将图像迁移到AWS ECS / ECR服务,则这是一个方便的方法。