你是否曾经遇到过需要在没有安装任何 Docker
客户端的机器上拉取容器镜像这样变态的需求呢?如果有,你当时又是如何解决的呢?今天我们就来给大家介绍几种另辟蹊径的方法来实现这样的需求。
使用 docker-drag 实现
根据官网介绍:docker-drag
是一个用于与 Docker Hub
交互的工具,并且不需 Docker
客户端本身支持。它主要是通过与 Docker Hub
的 HTTPS API
进行交互来实现相应功能。
安装 docker-drag
docker-drag
其实就是一个 Python
脚本,目前版本总共才 168 行代码。你只需要去官网仓库直接下载就可以使用了,非常的简单。
1 | $ wget https://raw.githubusercontent.com/NotGlop/docker-drag/master/docker_pull.py |
使用 docker-drag
我们先来看一下官方给出的演示效果。
docker-drag
的使用也是非常简单的,基本上和 docke pull
命令使用方法一致。其主要是借助 Python
的 Request
库和 HTTPS API
直接从仓库中拉取镜像,并保存为 TAR
文件。
1 | # 直接在官方仓库拉取官方镜像 |
镜像下载完成后,你可以直接使用 docker load -i
命令对 TAR
文件进行加载。由于不在依赖容器工具本身,在一些实际使用场景中,例如:CICD 流程。这个小工具或许能助你解决大问题哟!
使用 download-frozen-image-v2 实现
与 docker-drag
类似的工具,还有一个 SHELL
脚本的实现 download-frozen-image-v2
,该脚本隶属于 Moby
项目。
它的使用基本上和 docker-drag
类似,大致有如以下几步所示。
- 下载对应的脚本
1 | $ wget https://raw.githubusercontent.com/moby/moby/master/contrib/download-frozen-image-v2.sh |
- download-frozen-image-v2 脚本使用语法
1 | download-frozen-image-v2.sh target_dir image[:tag][@digest] ... |
- 一个完整的使用实例
1 | # 下载 Ubuntu 容器镜像 |
使用 dp 实现
dp
同样也是一个实现上述类似需求的小工具。dp
使用 Go
语言开发,天生具有良好的跨平台性。相对于前两个工具来说更容易在多平台上部署使用,而且 dp
还支持将多个镜像打包在一起。
安装 dp
dp
的安装非常简单,只需在官方仓库 Releases
页面直接下载各平台对应的版本,解压后即可使用。
使用 dp
dp
使用起来也是很容易的,下面我们就来看几个实例。
1 | # 从官方仓库拉取一个容器镜像 |
至此,我们就演示完了如何在不需要 Docker
客户端的前提下拉取容器镜像的方法。如果你还有更多更好的方法,欢迎大家积极留言哟!