我如何从一台机器转移泊坞窗图像而另一个没有使用一个仓库,无论私人或公开?
我经常玩,并在VirtualBox中创建自己的形象,并在结束时,我尝试部署到其他机器才会有真正的使用情况。
由于它是基于自己的基于图像(如Red Hat Linux的),它不能从Dockerfile重建。
是,我可以使用有简单的命令? 还是另一种解决方案?
这似乎保存/导出也可以达到类似的目的,看是什么保存和出口的码头工人之间的区别? ,而我更喜欢save
命令我的情况。
我如何从一台机器转移泊坞窗图像而另一个没有使用一个仓库,无论私人或公开?
我经常玩,并在VirtualBox中创建自己的形象,并在结束时,我尝试部署到其他机器才会有真正的使用情况。
由于它是基于自己的基于图像(如Red Hat Linux的),它不能从Dockerfile重建。
是,我可以使用有简单的命令? 还是另一种解决方案?
这似乎保存/导出也可以达到类似的目的,看是什么保存和出口的码头工人之间的区别? ,而我更喜欢save
命令我的情况。
您需要泊坞窗图像保存为一个tar文件:
docker save -o <path for generated tar file> <image name>
那么你的图像复制到与普通文件传输工具,如新的系统cp
或scp
。 之后,你必须将图像加载到码头工人:
docker load -i <path to image tar file>
PS:您可能需要sudo
所有命令。
编辑:你应该使用-o添加的文件名(不只是目录),例如:
docker save -o c:/myfile.tar centos:16
通过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
: 主页 , 手册页 )。
为了将图像保存到任何文件路径或共享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>
先救多克尔图像压缩文件:
docker save <docker image name> | gzip > <docker image name>.tar.gz
然后加载导出的图像使用下面的命令用来多克尔:
zcat <docker image name>.tar.gz | docker load
跑
docker images
看到主机上的图像的列表。 比方说,你有一个名为awesomesauce的图像。 在你的终端, cd
到您想要的图像导出到的目录。 现在运行:
docker save awesomesauce:latest > awesomesauce.tar
tar文件复制到U盘或什么的,然后将其复制到新主机。
现在,来自新主机做:
docker load < awesomesauce.tar
现在去喝杯咖啡,读黑客新闻 ...
当使用泊坞窗机,您可以复制机之间的图像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-machine config
子壳,采用当前默认泊坞窗主机。
docker save <image> | docker $(docker-machine config <mach>) load
从目前的搬运工主机复制图像mach
要么
docker $(docker-machine config <mach>) save <image> | docker load
从复制mach
当前泊坞窗主机。
对于一个容器的文件系统的扁平出口,使用;
docker export CONTAINER_ID > my_container.tar
用cat my_container.tar | docker import -
cat my_container.tar | docker import -
导入所述图像。
我想你需要保存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文件到您的新的码头工人实例任何方法工作在你的环境中,例如FTP
, SCP
等。
运行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
详情请见详细的职位 。
要从当地码头工人安装到minikube VM传输图像:
docker save <image> | (eval $(minikube docker-env) && docker load)
所有其他的答案是非常有益的。 我刚刚经历了同样的问题去,并找出了一种简便方法docker machine scp
。
由于泊坞窗机v0.3.0,SCP被引入到复制文件从一个泊坞窗机到另一台。 这是非常方便的,如果你想复制从本地计算机到远程机器多克尔一个文件,例如AWS EC2或数字海洋,因为泊坞窗机是照顾SSH凭证的为您服务。
节省您的使用图像docker save
,如:
docker save -o docker-images.tar app-web
使用图像复制泊坞窗机SCP
docker-machine scp ./docker-images.tar remote-machine:/home/ubuntu
假设您的远程泊坞窗机是remote-machine
和你想要的tar文件是目录是/home/ubuntu
。
加载泊坞窗图像
docker-machine ssh remote-machine sudo docker load -i docker-images.tar
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的注册表”标志?
您可以使用sshfs
:
$ sshfs user@ip:/<remote-path> <local-mount-path>
$ docker save <image-id> > <local-mount-path>/myImage.tar
我想与标签移动的所有图像。
```
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
。
这是你如何可以两个远程寄存器/存储库之间移动泊坞窗图像。 它的工作原理与泊坞版本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服务。