你遇到过这种变态的需要在没有安装任何Docker客户端的机器上拉取容器镜像吗?如果有,当时是怎么解决的?今天我们就来介绍几种Findanotherway来满足这个需求。使用docker-drag实现根据官网介绍:docker-drag是一个与DockerHub交互的工具,不需要Docker客户端本身的支持。主要通过与DockerHub的HTTPSAPI交互实现相应的功能。项目地址:https://github.com/NotGlop/docker-drag安装docker-dragdocker-drag其实是一个Python脚本,目前版本总共只有168行代码。只需要到官网仓库直接下载使用即可,非常简单。$wgethttps://raw.githubusercontent.com/NotGlop/docker-drag/master/docker_pull.py使用docker-drag,来看看官方的演示效果。docker-drag的使用也很简单,与dockerpull命令的使用基本相同。主要是利用Python的Request库和HTTPSAPI直接从仓库中拉取镜像并保存为TAR文件。#官方仓库直接拉取官方镜像$pythondocker_pull.pynginx:alpine#官方仓库直接拉取三方镜像$pythondocker_pull.pymysql/mysql-server:8.0#三方仓库直接拉取镜像$pythondocker_pull.pymcr.microsoft.com/windows/nanoserver@sha256:ae443bd9609b9ef06d21d6caab59505cb78f24a725cc24716d4427e36aedabf2镜像下载完成后,可以直接使用dockerload-i命令加载TAR文件。由于不依赖于容器工具本身,在一些实际使用场景中,例如:CICD进程。这个小工具或许能帮你解决大问题!使用download-frozen-image-v2实现一个类似docker-drag的工具,一个SHELL脚本实现download-frozen-image-v2,属于Moby项目。项目地址:https://github.com/moby/moby其使用与docker-drag基本类似,如下步骤所示。1.下载对应脚本$wgethttps://raw.githubusercontent.com/moby/moby/master/contrib/download-frozen-image-v2.sh2.download-frozen-image-v2脚本使用语法download-frozen-image-v2.shtarget_dirimage[:tag][@digest]...3.一个完整的使用示例稍微复杂一点,需要手动制作一个TAR包$tar-C'ubuntu'-cf'ubuntu.tar'.#导入容器镜像$dockerload-iubuntu.tar#导入容器镜像后,运送一个容器$dockerrun--rm-tiubuntubashroot@1dd5e62113b9:/#利用dp实现dp也是实现上面类似需求的一个小工具。dp是用Go语言开发的,天然是跨平台的。相比前两个工具,更容易在多平台部署使用,而且dp还支持将多张图片打包在一起。项目地址:https://github.com/zhangguanzhang/dp/Installationdpdp的安装非常简单,直接从官方仓库Releases页面下载各个平台对应的版本,解压即可使用。dpdp的使用也非常简单,下面我们来看几个例子。#从官方仓库拉取容器镜像$dppullnginx:alpine#从官方仓库拉取容器镜像并打包成压缩文件$dppull-onginx.tar.gznginx:alpine#使用sha256拉取容器镜像$dppullmcr。微软。com/windows/nanoserver@sha256:ae443bd9609b9ef06d21d6caab59505cb78f24a725cc24716d4427e36aedabf2#从官方仓库一次性拉取多个容器镜像打包成压缩文件$dppull-oproject.tar.gznginx:alpinenginx:1.17.5-pullthethree-partyimagefromPull仓库将多个容器镜像打包成一个压缩文件$dppull-oproject.tar.gznginx:alpinegcr.io/google_containers/pause-amd64:3.1到目前为止,我们已经演示了如何在不使用Docker客户端的情况下拉取容器镜像。
