如何将Docker镜像从一台主机复制到另一台上而不需要通过存储库?
如何在不使用存储库的情况下将Docker镜像从一台机器转移到另一台机器,无论是私有还是公共?
我习惯在virtualbox上播放和创build我自己的图像,当它完成时,我尝试部署到其他机器上以实际使用。
由于它基于自己的映像(如redhat),所以不能从Dockerfile重新创build。
有没有简单的命令我可以使用? 还是另一种解决方
更新看来保存/导出可以达到类似的目的,请参阅在Docker中保存和导出有什么区别? ,我更喜欢我的情况save
命令。
您将需要将泊坞窗图像保存为tar文件:
docker save -o <save image to path> <image name>
然后使用常规的文件传输工具(如cp
或scp
将图像复制到新系统。 之后,您将不得不将图像加载到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>) load
在mach1
和mach2
之间复制映像。
当然,你也可以在中间贴上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 load
从mach
复制到当前docker主机。
所有其他答案是非常有帮助的。 我只是遇到了同样的问题,并找出了一个简单的方式与docker machine scp
。
由于docker机v0.3.0,scp被引入从一个docker机复制文件到另一个。 如果您希望将文件从本地计算机复制到远程Docker机器(如AWS EC2或Digital Ocean),这非常方便,因为Docker机器正在为您处理ssh证书。
-
使用
docker save
保存你的图像docker save
像:docker保存-odocker-image.tar app-web
-
使用docker-machine scp复制图像
docker-machine scp ./docker-images.tar remote-machine:/ home / ubuntu
假设你的远程docker机器是remote-machine
,你想要tar文件的目录是/home/ubuntu
-
加载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实例中,使用您环境中的任何方法,例如FTP
, SCP
等。
在新的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服务,则这是一个方便的方法。