如何在不使用存储库的情况下将Docker映像从一台机器传输到另一台机器,无论是私有还是公共的?
我在VirtualBox中创建了自己的映像,完成后,我尝试部署到其他机器上以获得实际使用。
由于它基于我自己的镜像(如Red Hat Linux),因此无法从Dockerfile中重新创建。我的dockerfile不容易移植。
有没有简单的命令可以使用?还是另一种解决方案?
如何在不使用存储库的情况下将Docker映像从一台机器传输到另一台机器,无论是私有还是公共的?
我在VirtualBox中创建了自己的映像,完成后,我尝试部署到其他机器上以获得实际使用。
由于它基于我自己的镜像(如Red Hat Linux),因此无法从Dockerfile中重新创建。我的dockerfile不容易移植。
有没有简单的命令可以使用?还是另一种解决方案?
当前回答
您可以使用sshfs:
$ sshfs user@ip:/<remote-path> <local-mount-path>
$ docker save <image-id> > <local-mount-path>/myImage.tar
其他回答
如果您在Windows计算机上工作,并将命令(如
docker save <image> | ssh user@host docker load
如果您使用的是powershell,则不会起作用,因为它似乎在输出中添加了一个额外的字符。但是,如果使用cmd(命令提示符)运行该命令,则该命令将起作用。附带说明的是,您也可以使用Chocolatey安装gzip,以下内容也可以在cmd中使用。
docker save <image> | gzip | ssh user@host docker load
对于容器文件系统的扁平导出,请使用;
docker导出CONTAINER_ID>my_CONTAINER.tar
使用cat my_container.tar | docker import-导入所述图像。
要将图像从本地Docker安装传输到minikube VM:
docker save <image> | (eval $(minikube docker-env) && docker load)
首先将Docker映像保存到压缩存档中:
docker save <docker image name> | gzip > <docker image name>.tar.gz
然后使用以下命令将导出的图像加载到Docker:
zcat <docker image name>.tar.gz | 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>