如何在不使用pull命令的情况下下载docker镜像?

有没有一种方法可以使用Fx下载Docker镜像/容器。
Firefox和不使用内置的docker-pull

我被公司的防火墙和代理封锁,我不能通过它的漏洞。

编辑那么我想我必须把这个戳记出来。 我的问题是,我不能使用docker来获取图像。 IE泊坞窗保存/拉和其他docker提供的function,因为它被防火墙阻止。

只是一个替代scheme – 这是我在我的组织为couchbase图像做了什么,我被代理阻止。

在我的个人笔记本电脑上(OSX)

 ~$ $ docker save couchbase > couchbase.tar ~$ ls -lh couchbase.docker -rw------- 1 vikas devops 556M 12 Dec 21:15 couchbase.tar ~$ xz -9 couchbase.tar ~$ ls -lh couchbase.tar.xz -rw-r--r-- 1 vikas staff 123M 12 Dec 22:17 couchbase.tar.xz 

然后,我把压缩的tar球上传到Dropbox并下载到我的工作机器上。 出于某种原因Dropbox被打开:)

在我的工作笔记本电脑(CentOS 7)

 $ docker load < couchbase.tar.xz 

参考

首先,检查您的docker守护程序是否configuration为使用代理。
例如,在boot2docker和docker-machine中, 这是在--engine-env machine create上用--engine-env选项完成的。

如果这只是一个证书问题(即Firefox不能访问DockerHub),请尝试安装该证书 :

 openssl s_client -connect index.docker.io:443 -showcerts /dev/null | openssl x509 -outform PEM > docker.pem sudo cp docker.pem /etc/pki/ca-trust/source/anchors/ sudo update-ca-trust sudo systemctl restart docker sudo docker run hello-world 

另一个解决方法(不推荐的解决scheme) 将访问docker集线器,而不依赖与--insecure-registry证书 :

如果防火墙正在阻止任何docker pull,那么您甚至无法从Firefox访问DockerHub,那么您需要docker docker save / docker load一个图像档案。 将其从您访问Docker Hub的机器(以及docker pull成功的位置)保存。 将其加载到公司计算机上(当然,经过ITpipe理员的批准后)。

注意:您不能轻易地“下载”图像,因为它通常基于您需要下载的其他图像的顶部。
这就是docker pull为你做的。
这也是docker save (创build一个由所有必要图像组成的档案)

OP Ephreal 在评论中补充道:

[我]也没有让我的公司形象工作。
但是我发现我可以下载docker文件并从头开始重新创build自己的映像
这与下载图像基本相同。

我只是自己处理这个问题 – 从受限制的机器上下载一个可以访问因特网的镜像,但是没有Docker客户端,用于另一个受限制的Docker客户端但没有Internet访问的机器。 我将我的问题发布到DevOps StackExchange站点 :

  • 从Docker Hub下载Docker镜像,无需使用Docker

在Docker社区的帮助下,我find了解决问题的办法。 接下来是我的解决scheme。


所以事实certificate, Moby项目在Moby Github上有一个shell脚本,可以从Docker Hub下载一个可导入到Docker的格式的图像:

  • download-frozen-image-v2.sh

该脚本的用法语法如下所示:

 download-frozen-image-v2.sh target_dir image[:tag][@digest] ... 

然后可以使用tardocker load导入图像:

 tar -cC 'target_dir' . | docker load 

为了validation脚本是否按预期运行,我从Docker Hub下载了一个Ubuntu镜像,并将其加载到Docker中:

 user@host:~$ bash download-frozen-image-v2.sh ubuntu ubuntu:latest user@host:~$ tar -cC 'ubuntu' . | docker load user@host:~$ docker run --rm -ti ubuntu bash root@1dd5e62113b9:/# 

在实践中,我将不得不首先从互联网客户端( 没有安装Docker)复制数据到目标/目标机器(它已经安装了Docker):

 user@nodocker:~$ bash download-frozen-image-v2.sh ubuntu ubuntu:latest user@nodocker:~$ tar -C 'ubuntu' -cf 'ubuntu.tar' . user@nodocker:~$ scp ubuntu.tar user@hasdocker:~ 

然后加载并使用目标主机上的映像:

 user@hasdocker:~ docker load ubuntu.tar user@hasdocker:~ docker run --rm -ti ubuntu bash root@1dd5e62113b9:/#