如何在不使用存储库的情况下将Docker映像从一台机器传输到另一台机器,无论是私有还是公共的?
我在VirtualBox中创建了自己的映像,完成后,我尝试部署到其他机器上以获得实际使用。
由于它基于我自己的镜像(如Red Hat Linux),因此无法从Dockerfile中重新创建。我的dockerfile不容易移植。
有没有简单的命令可以使用?还是另一种解决方案?
如何在不使用存储库的情况下将Docker映像从一台机器传输到另一台机器,无论是私有还是公共的?
我在VirtualBox中创建了自己的映像,完成后,我尝试部署到其他机器上以获得实际使用。
由于它基于我自己的镜像(如Red Hat Linux),因此无法从Dockerfile中重新创建。我的dockerfile不容易移植。
有没有简单的命令可以使用?还是另一种解决方案?
当前回答
您可以将一行代码与DOCKER_HOST变量一起使用:
docker save app:1.0 | gzip | DOCKER_HOST=ssh://user@remotehost docker load
其他回答
您可以使用sshfs:
$ sshfs user@ip:/<remote-path> <local-mount-path>
$ docker save <image-id> > <local-mount-path>/myImage.tar
要将图像从本地Docker安装传输到minikube VM:
docker save <image> | (eval $(minikube docker-env) && docker load)
要将映像保存到任何文件路径或共享NFS位置,请参阅以下示例。
通过执行以下操作获取图像id:
docker images
假设您有一个id为“矩阵数据”的图像。
使用id保存图像:
docker save -o /home/matrix/matrix-data.tar matrix-data
将图像从路径复制到任何主机。现在使用以下方法导入本地Docker安装:
docker load -i <path to copied image file>
所有其他答案都非常有用。我刚刚解决了同样的问题,并找到了一个使用docker机器scp的简单方法。
从Docker Machine v0.3.0开始,引入scp将文件从一台Docker机器复制到另一台。如果您想将文件从本地计算机复制到远程Docker机器(如AWS EC2或Digital Ocean),这非常方便,因为Docker机器正在为您处理SSH凭据。
使用docker保存图像,如:docker save-o docker-images.tar应用程序web使用docker machine scp复制图像码头机scp/docker-images.tar远程计算机:/home/ubuntu
假设您的远程Docker机器是远程机器,您希望tar文件所在的目录是/home/ubuntu。
加载Docker映像docker机器ssh远程机器sudo docker加载-i docker-images.tar
通过SSH传输Docker映像,动态压缩内容:
docker save <image> | bzip2 | ssh user@host docker load
请注意,docker load会自动为您解压缩图像。它支持gzip、bzip2和xz。
将pv放在管道中间也是一个好主意,可以查看传输情况:
docker save <image> | bzip2 | pv | ssh user@host docker load
(关于pv的更多信息:主页,手册页)。
来自@Thomas Steinbach的重要提示:在高带宽上,bzip压缩速度不够快。如果您可以以10 MB/s或更高的速度上传,gzip/gunzip将比bzip2快得多。
如果您使用3G,而您的互联网速度较慢,@jgmjgm建议您可以使用xz:它提供了更高的压缩比。