直接下载docker镜像包

这篇具有很好参考价值的文章主要介绍了直接下载docker镜像包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这周正在做APIcat的企业版研发,准备适配阿里云的计算巢提供企业直接云安装的功能,顺便把原来写过的一个直接下载docker镜像包的小程序挂到了Gitee上面,有需要的可以点击下载

https://gitee.com/extrame/dgethttps://gitee.com/extrame/dget

主要用处是不用下载和安装完整的docker程序,直接使用这个工具下载docker镜像文件。

众所周知,docker安装还是挺复杂的事情,windows下还需要wsl的支持,安装后还非常耗资源,有时候还有些莫名其妙的冲突,我就出现过和暗黑有时候会冲突的情况。

而docker hub的镜像下载,是只能使用docker pull进行的,这样就造成本来我们只想下一个image取服务器安装,但是不得不在本机安装庞大的docker来仅仅做一个pull的窘境。

所以我上网搜了一下,确实有很多人有类似的需求:

dockerhub - Downloading Docker Images from Docker Hub without using Docker - DevOps Stack Exchangehttps://devops.stackexchange.com/questions/2731/downloading-docker-images-from-docker-hub-without-using-docker我照着这些指引,前段时间就写了这个小程序。

最近是因为好多国产系统架构都改了,发现docker hub的多架构支持,原来我的程序不支持,又把这块加了进去。就干脆改了开源,有需要的直接用。

主要功能

输入包名和版本号,下载docker image

  1. 支持本地缓存,下载好的layer不再重复下载
  2. 直接打包gz包,用于后续的docker load
  3. 支持多架构选择,使用参数-arch可以指定想下载的系统和架构
  4. 支持仅打印信息的打印模式

程序说明

程序还是非常简单的,docker下载基本就是个http客户端的事情,倒是没多复杂,所以程序里除了一个cmd的入口之外,主要就是个install.go。

install.go里面主要就是多次的http请求以及对应的json数据的Marshall和Unmarshall。

docker hub的http请求设计的很有意思,他在同样使用hash id表示docker包之外,用Accept来达到客户端获取不同内容的目的。

例如:

application/vnd.docker.distribution.manifest.list.v2+json : 获取该软件包的信息列表

application/vnd.docker.distribution.manifest.v2+json: 获得该架构的具体信息

官方解释包含以下几种:

  • application/vnd.docker.distribution.manifest.v1+json: schema1 (existing manifest format)
  • application/vnd.docker.distribution.manifest.v2+json: New image manifest format (schemaVersion = 2)
  • application/vnd.docker.distribution.manifest.list.v2+json: Manifest list, aka “fat manifest”
  • application/vnd.docker.container.image.v1+json: Container config JSON
  • application/vnd.docker.image.rootfs.diff.tar.gzip: “Layer”, as a gzipped tar
  • application/vnd.docker.image.rootfs.foreign.diff.tar.gzip: “Layer”, as a gzipped tar that should never be pushed
  • application/vnd.docker.plugin.v1+json: Plugin config JSON

这用法稍微有些阴间了,这不是一个很容易让人理解的通用做法,这个是不是符合RESTful标准也很难说。

总之,基本的下载逻辑就先获得客户端token,然后获得application/vnd.docker.distribution.manifest.list.v2+json里面的包信息列表,列表的条目里会包含支持的不同系统和架构,再选择对应需要的进入下一步下载。

下一步下载就是直接把Accept设置成application/vnd.docker.distribution.manifest.v2+json下载对应包的内容,再分层下载包的依赖包。

下载完成的都放到同一个文件夹,最后打包成一个tar.gz就行了。

有感兴趣代码的可以看intall.go

看这个官方说明,可能有直接下载gz包的模式,没研究过,可能能更快文章来源地址https://www.toymoban.com/news/detail-426582.html

到了这里,关于直接下载docker镜像包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s除了可以直接运行docker镜像之外,还可以运行什么? springboot项目打包成的压缩包可以直接运行在docker容器中吗?

    Kubernetes(k8s)主要设计用于自动部署、扩展和管理容器化应用程序。虽然它与Docker容器最为密切相关,Kubernetes实际上是与容器运行时技术无关的,这意味着它不仅仅能够管理Docker容器。Kubernetes支持多种容器运行时,包括但不限于: Docker :最为人熟知的容器平台,Kubernetes最

    2024年02月21日
    浏览(38)
  • 【使用debian镜像】docker的基础镜像很多,生产环境中使用建议还是不要使用centos和alpine的基础镜像了,直接使用debian的基础镜像即可。

    本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/108971807 未经博主允许不得转载。 博主CSDN地址是:https://blog.csdn.net/freewebsys 博主掘金地址是:https://juejin.cn/user/585379920479288 博主知乎地址是:https://www.zhihu.com/people/freewebsystem 为啥要使用debian镜像呢? 首先 centos的官网已

    2024年02月08日
    浏览(35)
  • Docker把公共镜像推送到harbor私服的流程(企业级)

    如果构建项目时,使用了 k8s + docker + Jenkins 的模式。 那么我们在docker构建镜像时,如果需要使用了Nodejs,那么我们必须得从某个资源库中拉取需要的Nodejs。 在企业里,正常都会把自己项目涉及的库都放在harbor私服里。 下面讲一下,升级Nodejs库和Docker拉取库推送到私有库的操

    2024年02月16日
    浏览(33)
  • Windows11微软官方原版ISO镜像下载 含专业版、教育版、企业版最新正式版

    本次win11更新带有一些亮点和改进,以及一系列已知问题。该更新还包括 Windows 11 服务堆栈更新,以确保未来的 Windows 更新下载和安装可靠。本次发布说明如下: 解决了可能阻止某些人打开“开始”菜单的已知问题。在受影响的设备上,单击或点击“开始”按钮或使用 Windo

    2024年02月03日
    浏览(45)
  • 宝塔面板备份docker,镜像打包下载到本地,镜像还原,镜像推送

    欢迎关注 『发现你走远了』 博客,持续更新中 欢迎关注 『发现你走远了』 博客,持续更新中 软件商店-点击docker管理器的设置 生成镜像 这里可以直接点击提交,你也可以自己自定义 打包镜像 选择打包我们刚刚生成的镜像 下载打包好的镜像 你可以通过上传文件的方法上传

    2024年02月11日
    浏览(31)
  • 【Docker】从 Docker 镜像中下载内容到本地

    使用 docker run 命令启动镜像并进入容器。 其中 my-container 为你给容器取的名字。 在容器中进行所需的操作,例如下载文件到容器中。 使用 docker cp 命令将容器中的文件复制到本地。 其中 /path/to/file 为容器中要复制的文件路径,/local/path 为本地路径。 从本地上传内容到 Docke

    2024年02月05日
    浏览(33)
  • Docker如何连接至本地私服Harbor中 推送镜像、查看镜像、下载镜像

    win/mac/linux 装有Docker 私服 Harbor Docker中文站 Docker官方站 下载并安装Docker Harbor GitHub Harbor 官方地址 下载并安装 Harbor (测试的话 推荐用Docker镜像来启动Harbor 减少环境问题) 启动后 访问 Harbor 的页面 登录进入 进入后显示 记住这几个关键信息(每个人不一样):地址(172.16.1.77)

    2024年02月06日
    浏览(47)
  • 群晖Docker套件注册Harbor私有镜像仓库,并下载运行自己发布的Docker镜像

    @[群晖Docker套件注册Harbor私有镜像仓库,并下载运行自己发布的Docker镜像] 在进行微服务开发时,一些基础服务组件(Nacos、Redis、Mysql)的运行以及越来越多的业务服务组件的开发,会导致开发者电脑的内存资源紧张,此时我们可以把一些基础服务组件和基本业务组件(认证中

    2024年02月05日
    浏览(38)
  • Docker Toolbox下载安装运行镜像

    这是Docker Toolbox的下载链接,找个最新的下就好了. 阿里云开源镜像站资源目录 下载之后点击exe文件点击安装,然后一直点next就行了. 安装之后,点击的时候如果显示快捷方式不对显示查找git.bash文件的话,就要找到你git安装目录的bin目录里的bash.exe文件,点击选中就行了,

    2024年02月06日
    浏览(35)
  • Docker镜像下载加速及设置代理

    在使用docker pull拉镜像默认从docker hub里拉取,从国内访问这个网站速度可能会很慢。可以通过配置加速器解决。 登录阿里云控制台-搜索容器镜像服务-镜像工具-镜像加速器,即可看到加速器地址 通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 登录华为云-搜索容器镜像

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包