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

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

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

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


当前回答

您可以将一行代码与DOCKER_HOST变量一起使用:

docker save app:1.0 | gzip | DOCKER_HOST=ssh://user@remotehost docker load

其他回答

1.从注册表中提取图像或存储库。

docker pull[选项]名称[:TAG|@DIGEST]

2.将其保存为.tar文件。

docker save[选项]图像[图像…]

例如:

docker pull hello-world
docker save -o hello-world.tar hello-world

对于容器文件系统的扁平导出,请使用;

docker导出CONTAINER_ID>my_CONTAINER.tar

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

所有其他答案都非常有用。我刚刚解决了同样的问题,并找到了一个使用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

首先将Docker映像保存到压缩存档中:

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

然后使用以下命令将导出的图像加载到Docker:

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

使用docker机器时,您可以使用以下方式在机器mach1和mach2之间复制图像:

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

当然,您也可以将pv放在中间以获得进度指示器:

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

您还可以省略docker机器配置子shell之一,以使用当前默认的docker主机。

docker save <image> | docker $(docker-machine config <mach>) load

将图像从当前docker主机复制到mach

or

docker $(docker-machine config <mach>) save <image> | docker load

从mach复制到当前docker主机。