如何复制从一个主机到另一个泊坞图像,而无需使用存储库如何复制从一个主机到另一个泊坞图像,而无需使用存

2019-05-09 05:37发布

我如何从一台机器转移泊坞窗图像而另一个没有使用一个仓库,无论私人或公开?

我经常玩,并在VirtualBox中创建自己的形象,并在结束时,我尝试部署到其他机器才会有真正的使用情况。

由于它是基于自己的基于图像(如Red Hat Linux的),它不能从Dockerfile重建。

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

这似乎保存/导出也可以达到类似的目的,看是什么保存和出口的码头工人之间的区别? ,而我更喜欢save命令我的情况。

Answer 1:

您需要泊坞窗图像保存为一个tar文件:

docker save -o <path for generated tar file> <image name>

那么你的图像复制到与普通文件传输工具,如新的系统cpscp 。 之后,你必须将图像加载到码头工人:

docker load -i <path to image tar file>

PS:您可能需要sudo所有命令。

编辑:你应该使用-o添加的文件名(不只是目录),例如:

docker save -o c:/myfile.tar centos:16


Answer 2:

通过SSH传输码头工人的形象,bzipping上飞的内容:

docker save <image> | bzip2 | \
     ssh user@host 'bunzip2 | docker load'

这也是把一个好主意, pv在管中间看到转移是怎么回事:

docker save <image> | bzip2 | pv | \
     ssh user@host 'bunzip2 | docker load'

(有关更多信息pv : 主页 , 手册页 )。



Answer 3:

为了将图像保存到任何文件路径或共享NFS地方请看下面的例子。

通过做获取图片ID:

sudo docker images

假设你有ID为“矩阵数据”的图像。

保存有ID的图像:

sudo docker save -o /home/matrix/matrix-data.tar matrix-data

图像从路径到任何主机复制。 现在导入到使用本地泊坞窗安装:

sudo docker load -i <path to copied image file>


Answer 4:

先救多克尔图像压缩文件:

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

然后加载导出的图像使用下面的命令用来多克尔:

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


Answer 5:

docker images

看到主机上的图像的列表。 比方说,你有一个名为awesomesauce的图像。 在你的终端, cd到您想要的图像导出到的目录。 现在运行:

docker save awesomesauce:latest > awesomesauce.tar

tar文件复制到U盘或什么的,然后将其复制到新主机。

现在,来自新主机做:

docker load < awesomesauce.tar

现在去喝杯咖啡,读黑客新闻 ...



Answer 6:

当使用泊坞窗机,您可以复制机之间的图像mach1mach2有:

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-machine config子壳,采用当前默认泊坞窗主机。

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

从目前的搬运工主机复制图像mach

要么

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

从复制mach当前泊坞窗主机。



Answer 7:

对于一个容器的文件系统的扁平出口,使用;

docker export CONTAINER_ID > my_container.tar

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



Answer 8:

我想你需要保存couchdb-cartridge具有7ebc8510bc2c的图片ID:

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文件到您的新的码头工人实例任何方法工作在你的环境中,例如FTPSCP等。

运行docker load上新的泊坞窗instance命令并指定图像的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

详情请见详细的职位 。



Answer 9:

要从当地码头工人安装到minikube VM传输图像:

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


Answer 10:

所有其他的答案是非常有益的。 我刚刚经历了同样的问题去,并找出了一种简便方法docker machine scp

由于泊坞窗机v0.3.0,SCP被引入到复制文件从一个泊坞窗机到另一台。 这是非常方便的,如果你想复制从本地计算机到远程机器多克尔一个文件,例如AWS EC2或数字海洋,因为泊坞窗机是照顾SSH凭证的为您服务。

  1. 节省您的使用图像docker save ,如:

     docker save -o docker-images.tar app-web 
  2. 使用图像复制泊坞窗机SCP

     docker-machine scp ./docker-images.tar remote-machine:/home/ubuntu 

假设您的远程泊坞窗机是remote-machine和你想要的tar文件是目录是/home/ubuntu

  1. 加载泊坞窗图像

     docker-machine ssh remote-machine sudo docker load -i docker-images.tar 


Answer 11:

docker-push-ssh仅仅是这种情况下的命令行实用程序。

它设置了一个临时的私人码头工人注册表中的服务器上,从本地主机建立一个SSH隧道,推你的形象,再经过自身清理。

这种方法在的好处docker save (在写答案大多数都是采用这种方法的时间),只有新层推到服务器,从而导致更快的上传。

经常使用中间注册表等dockerhub是不希望的,并且笨重的。

https://github.com/brthor/docker-push-ssh

安装:

pip install docker-push-ssh

例:

docker-push-ssh -i ~/my_ssh_key username@myserver.com my-docker-image

最大的条件是,你有你的本地主机手动添加到多克的insecure_registries配置。 一旦运行该工具,它会给你一个信息的错误:

Error Pushing Image: Ensure localhost:5000 is added to your insecure registries.
More Details (OS X): https://stackoverflow.com/questions/32808215/where-to-set-the-insecure-registry-flag-on-mac-os

我应该在哪里设置在Mac OS的“--insecure的注册表”标志?



Answer 12:

您可以使用sshfs

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


Answer 13:

我想与标签移动的所有图像。

```
OUT=$(docker images --format '{{.Repository}}:{{.Tag}}')
OUTPUT=($OUT)
docker save $(echo "${OUTPUT[*]}") -o /dir/images.tar
``` 

说明:

首先OUT得到所有标签,但与新线分离。 第二OUTPUT得到所有标签的数组。 三$(echo "${OUTPUT[*]}")提出了一个所有标签docker save命令,以便所有图像都在一个单一的焦油。

此外,这可以使用gzip可以压缩。 在目标上运行:

tar xvf images.tar.gz -O | docker load

-O选项以tar所说标准输入可以由被抓取内容docker load



Answer 14:

这是你如何可以两个远程寄存器/存储库之间移动泊坞窗图像。 它的工作原理与泊坞版本1.10.2,构建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服务。



文章来源: How to copy Docker images from one host to another without using a repository
标签: docker