DockerHub 上有多少个镜像?
哪些基础镜像被引用最多?
哪些镜像最受欢迎?
来自 CenturyLink 实验室博客的一篇文章将为你解答这些问题,文中所有数据均来自 2015 年 8 月 6 日, Docker Registry API 的调用。
灵雀云正在举办“我要上头条: Docker 镜像征集”活动,参与有大奖,看看哪些镜像最受国内最用户的欢迎!
Docker CEO Ben Golub 在 2014 年的 DockerCon 上发布 Docker Hub ,并指出已经有超过 14,000 个 Docker 化的应用存储在他们的 publc registry 中。而根据 2015 年的 DockerCon 上, Docker SVP Marianna Tessel 公布的数据, Docker Hub 上的 repos 已经超过 150,000 个,仅一年就有了十倍的增长!
看到这些疯狂增长的数字,笔者不禁想去探索这些数据背后的故事。所以决定从 Docker Hub 中挖掘数据,通过调用 Docker Registry API ,研究这 150,000 个 repos 。
需要注意的是: Docker Hub 中的 repos 和 tag 在不断地被添加和删除,所以文中的数据只是在某个特定时间点的数据,当你读到这篇文章时可能它已经发生了变化,但这些数字背后体现的规模还是基本准确的。
镜像仓库( Repositories )
最新统计显示 Docker Hub 上有 125,289 个公共库。这比在六月的 DockerCon 上提及的 150,000 略少(的确增长到过那个数字),可能因为有一些私有库。
在这些公有库中, 39,441 (31%)是自动构建( automate build ),也就是说这个镜像是由 Docker Hub ,构建一个已经发布的 Dockerfile 生成的镜像。剩下 85,848 个库镜像是通过 docker push 命令上传的。
Docker Hub 上目前有 84 个官方镜像仓库,涵盖了 Mysql , MongoDB 和 Redis 等常用的服务。相比在 14 年 DockerCon 上公布的 13 个,这也是相当大的增幅。
鉴于国内访问 Docker Hub 的诸多不便,灵雀云镜像中心也是一个容器化服务发布和共享的社区平台,其中汇集了数以万计的来自平台、社区和第三方的优质镜像,让用户组合、复用容器化服务,轻松搭建新一代云端应用。
灵雀云正在举办“我要上头条: Docker 镜像征集”活动,参与有大奖,看看哪些镜像最受国内最用户的欢迎!
机构( Organizations )
以下是发布公共镜像仓库最多的 10 大机构或个人:
Organization
不知道 datdocker 用那 8261 个库做什么,看起来像是 CI 过程中生成的新库,因为很多库名都加了数字后缀。
而 imiell 的拥有者是 Ian Miell ,曾写过一本 Docker 的书,许多库看起来都是书中的范例。
收藏数( Stars )
通过 Docker registry API 获取不了镜像被 pull 的个数,只能通过镜像的 star 数量,来衡量镜像的流行度。
毫无疑问,拥有最高 star 数量的库都是官方库。排名最高的 10 个官方库是:
排名最高的十个非官方库是:
这张列表上最令人惊讶的是 aspnet 镜像( ASP.NET 的 Docker 镜像),显然有许多微软开发人员对 Docker 很感兴趣。
在灵雀云, aspnet 也是一个比较受欢迎的镜像:
镜像地址: https://hub.alauda.cn/repos/microsoft/aspnet
pull 命令: docker pull index.alauda.cn/microsoft/aspnet
在刚刚结束的“我要上头条”活动数据显示,这一个月来灵雀云最受欢迎的非官方镜像是 ToughRADIUS 开源宽带认证计费系统的 Docker 镜像。
Tags
在这 125,289 个公共库中,有 243,966 个被加了 tag 。平均每一个库有 1.9 个 tag 。超过 100,000 个库( 82%)有唯一的 tag ,有少量库拥有上千个 tag 。
tag 最多的是 rstiller/jetty ,有 2104 个 tag (他们似乎为每个可能组合的 OS , JDK 和 Jetty 版本都创建了镜像 tag )。所有库中最常使用的 tag :
最有趣的 tag 是” kitten ”, 73 个不同的镜像都使用了它,可能和这个 Kubernetes Demo App ( https://github.com/kubernetes/kubernetes/blob/master/docs/user-guide/update-demo/kitten-rc.yaml )有关。
排第 1 的是“ lastest ”,如果你不明确指定一个 tag ,默认情况下就会是“ lastest ”。
有 247 个库没有 tag ,—它们都是没有镜像的空库。
基础镜像( base image )
Docker 的优雅之处在于其分层镜像格式,你不必从无到有构建你的镜像——你能使用任何公共镜像作为基础,构建自己的镜像。那么哪些镜像是最经常被引用的基础镜像呢?以下是排名前十的基础镜像:
显然, Ubuntu 是极其受大家欢迎的基础镜像,前 10 中占了 6 个,因为很多开发人员都对 Ubuntu 很熟悉。但建议关注一下 alpine ,特别是出于精简镜像的考虑。 scratch 镜像是当之无愧的 No.1.Docker 1.5 以前,几乎每个镜像都将 scratch 作为基础镜像。
Alpine 镜像的大小是 5MB ( ubuntu 镜像大小是 188MB ),有一个很棒的包管理器。 CenturyLink 已经将很多的基础镜像从 Ubuntu 迁移到了 Alpine ,显著缩小了镜像的大小。
[]()docker-images-alpine-vs-ubuntu
灵雀云用户 alexwhen ,在“精简 Docker 镜像”一文中,也曾提到过这个观点。
Missing Tags
10 个最经常被引用的基础镜像中, 6 个没有 tag (被标记为 lastest ),可能之前它们也被标记为某一个值,但又变了。
比如,之前 bf84c1d84a8f 层被标记为 debian:latest (也是 debian:jessie )。当其它镜像以其为基础镜像时,会在 Dockerfile 中写 FROM debian 或 FROM debian:jessie 。
如果 Debian 镜像被重新构建, tag 会被指向到另外的层。所以,镜像 tag 不是静态的,它们可能指向到另外的镜像。
如果你希望你的镜像始终基于最新版本的 Debian Jessie 或者 Ubuntu 构建而成,你需要追踪这些 tag 的变更,并根据情况重构镜像。 Docker Hub 的 repository link 特性可以帮你实现这一点。
本文为王家隆的投稿文章,译自: https://labs.ctl.io/docker-hub-top-10/
1
sunyang 2015-09-06 16:19:52 +08:00
最好贴在自己的博客或者第三方发布平台上。这里贴链接即可。
1 ,方便你随时修改文章 2 ,这是社区文化 |
2
loading 2015-09-06 20:15:07 +08:00 via iPhone
coreos 居然没有,前期还说得沸沸扬扬~
|
3
AlaudaCloud OP @sunyang 这样吗。。。我看大家收藏得还挺多的,直接贴链接大家会点吗?
|
4
likuku 2015-09-15 18:15:21 +08:00
@AlaudaCloud 这里贴全文是违规的。
|