假如服务器上没有 Docker 环境,你还能愉快的拉取容器镜像吗?

开发 开发工具
你是否曾经遇到过需要在没有安装任何 Docker 客户端的机器上拉取容器镜像这样变态的需求呢?如果有,你当时又是如何解决的呢?今天我们就来给大家介绍几种另辟蹊径的方法来实现这样的需求。

 你是否曾经遇到过需要在没有安装任何 Docker 客户端的机器上拉取容器镜像这样变态的需求呢?如果有,你当时又是如何解决的呢?今天我们就来给大家介绍几种另辟蹊径的方法来实现这样的需求。

[[283627]]

使用 docker-drag 实现

根据官网介绍:docker-drag 是一个用于与 Docker Hub 交互的工具,并且不需 Docker 客户端本身支持。它主要是通过与 Docker Hub 的 HTTPS API 进行交互来实现相应功能。

项目地址:https://github.com/NotGlop/docker-drag

安装 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. # 直接在官方仓库拉取官方镜像 
  2. $ python docker_pull.py nginx:alpine 
  3.  
  4. # 直接在官方仓库拉取三方镜像 
  5. $ python docker_pull.py mysql/mysql-server:8.0 
  6.  
  7. # 直接在三方仓库拉取镜像 
  8. $ python docker_pull.py mcr.microsoft.com/windows/nanoserver@sha256:ae443bd9609b9ef06d21d6caab59505cb78f24a725cc24716d4427e36aedabf2 

镜像下载完成后,你可以直接使用 docker load -i 命令对 TAR 文件进行加载。由于不在依赖容器工具本身,在一些实际使用场景中,例如:CICD 流程。这个小工具或许能助你解决大问题哟!

使用 download-frozen-image-v2 实现

与 docker-drag 类似的工具,还有一个 SHELL 脚本的实现 download-frozen-image-v2,该脚本隶属于 Moby 项目。

项目地址:https://github.com/moby/moby

它的使用基本上和 docker-drag 类似,大致有如以下几步所示。

1.下载对应的脚本

 

  1. $ wget https://raw.githubusercontent.com/moby/moby/master/contrib/download-frozen-image-v2.sh 

2.download-frozen-image-v2 脚本使用语法

 

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

3.一个完整的使用实例

 

  1. # 下载 Ubuntu 容器镜像 
  2. $ bash download-frozen-image-v2.sh ubuntu ubuntu:latest 
  3.  
  4. # download-frozen-image-v2 这里要稍为复杂点,需要自己手动打成 TAR 包 
  5. $ tar -C 'ubuntu' -cf 'ubuntu.tar' . 
  6.  
  7. # 导入容器镜像 
  8. $ docker load -i ubuntu.tar 
  9.  
  10. # 导入容器镜像完成后,运一个容器 
  11. $ docker run --rm -ti ubuntu bash 
  12. root@1dd5e62113b9:/# 

使用 dp 实现

dp 同样也是一个实现上述类似需求的小工具。dp 使用 Go 语言开发,天生具有良好的跨平台性。相对于前两个工具来说更容易在多平台上部署使用,而且 dp 还支持将多个镜像打包在一起。

项目地址:https://github.com/zhangguanzhang/dp/

安装 dp

dp 的安装非常简单,只需在官方仓库 Releases 页面直接下载各平台对应的版本,解压后即可使用。

使用 dp

dp 使用起来也是很容易的,下面我们就来看几个实例。

 

  1. # 从官方仓库拉取一个容器镜像 
  2. $ dp pull nginx:alpine 
  3.  
  4. # 从官方仓库拉取一个容器镜像并打包到压缩文件 
  5. $ dp pull -o nginx.tar.gz nginx:alpine 
  6.  
  7. # 使用 sha256 拉取一个容器镜像 
  8. $ dp pull mcr.microsoft.com/windows/nanoserver@sha256:ae443bd9609b9ef06d21d6caab59505cb78f24a725cc24716d4427e36aedabf2 
  9.  
  10. # 一次从官方仓库拉取多个容器镜像并打包到压缩文件 
  11. $ dp pull -o project.tar.gz nginx:alpine nginx:1.17.5-alpine-perl 
  12.  
  13. # 从三方镜像仓库拉取多个容器镜像并打包到压缩文件 
  14. $ dp pull -o project.tar.gz nginx:alpine gcr.io/google_containers/pause-amd64:3.1 

至此,我们就演示完了如何在不需要 Docker 客户端的前提下拉取容器镜像的方法。

责任编辑:华轩 来源: 运维之美
相关推荐

2018-01-22 09:04:06

镜像服务器作用

2018-11-22 09:40:11

Docker服务器企业版

2018-03-19 09:13:16

2018-07-06 09:48:00

2022-06-10 10:01:17

MacDockerLinux

2011-06-13 14:04:32

容错服务器HA

2016-03-09 09:50:44

容器Kubernetes

2019-07-16 14:44:52

DockerMySQL操作系统

2018-09-28 08:53:25

服务器架构访问量

2009-04-10 23:28:00

2021-05-20 13:30:39

UbuntuGUI系统运维

2014-09-22 09:52:06

2021-03-18 08:01:52

Docker容器迁移

2016-08-01 10:46:06

华为

2011-03-18 13:41:50

2018-03-15 08:25:53

2019-11-22 10:41:13

支付宝存储服务器

2010-05-19 10:31:07

IIS服务器

2017-02-27 13:22:29

戴尔

2018-03-01 10:26:25

无服务器计算架构
点赞
收藏

51CTO技术栈公众号