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

我在VirtualBox中创建了自己的映像,完成后,我尝试部署到其他机器上以获得实际使用。

由于它基于我自己的镜像(如Red Hat Linux),因此无法从Dockerfile中重新创建。我的dockerfile不容易移植。

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


当前回答

要将图像从本地Docker安装传输到minikube VM:

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

其他回答

通过gzip命令保存和加载docker图像的最快方法:

docker save <image_id> | gzip > image_file.tgz

要在另一台服务器上加载压缩图像,请立即使用此命令,它将被识别为压缩图像:

docker load -i image_file.tgz

要重命名或重新标记图像,请使用:

docker image tag <image_id> <image_path_name>:<version>

例如:

docker image tag 4444444 your_docker_or_harbor_path/ubuntu:14.0

首先将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>

保存所有图像的最佳方法如下:

docker save $(docker images --format '{{.Repository}}:{{.Tag}}') -o allimages.tar

以上代码将保存allimages.tar中的所有图像,要加载图像,请转到保存图像的目录并运行以下命令:

docker load -i allimages.tar

只需确保在PowerShell中而不是在Commad Prompt中使用此命令

您可以使用sshfs:

$ sshfs user@ip:/<remote-path> <local-mount-path>
$ docker save <image-id> > <local-mount-path>/myImage.tar