Docker Hub 最受欢迎的10大镜像

简介:

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最受欢迎的10大镜像

看到这些疯狂增长的数字,笔者不禁想去探索这些数据背后的故事。所以决定从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个,这也是相当大的增幅。

机构(Organizations)

以下是发布公共镜像仓库最多的10大机构或个人:

Docker Hub最受欢迎的10大镜像

不知道datdocker用那8261个库做什么,看起来像是CI过程中生成的新库,因为很多库名都加了数字后缀。

而imiell的拥有者是Ian Miell,曾写过一本Docker的书,许多库看起来都是书中的范例。

收藏数(Stars)

通过Docker registry API获取不了镜像被pull的个数,只能通过镜像的star数量,来衡量镜像的流行度。

毫无疑问,拥有最高star数量的库都是官方库。排名最高的10个官方库是:

Docker Hub最受欢迎的10大镜像

排名最高的十个非官方库是:

Docker Hub最受欢迎的10大镜像

这张列表上最令人惊讶的是aspnet镜像(ASP.NET的Docker镜像),显然有许多微软开发人员对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:

Docker Hub 最受欢迎的10大镜像

最有趣的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的优雅之处在于其分层镜像格式,你不必从无到有构建你的镜像——你能使用任何公共镜像作为基础,构建自己的镜像。那么哪些镜像是最经常被引用的基础镜像呢?以下是排名前十的基础镜像:

Docker Hub 最受欢迎的10大镜像

显然,Ubuntu是极其受大家欢迎的基础镜像,前10中占了6个,因为很多开发人员都对Ubuntu很熟悉。但建议关注一下alpine,特别是出于精简镜像的考虑。 scratch镜像是当之无愧的No.1.Docker 1.5以前,几乎每个镜像都将scratch作为基础镜像。

Alpine镜像的大小是5MB(ubuntu镜像大小是188MB),有一个很棒的包管理器。CenturyLink已经将很多的基础镜像从Ubuntu迁移到了Alpine,显著缩小了镜像的大小。

Docker Hub 最受欢迎的10大镜像

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特性可以帮你实现这一点。


本文作者:佚名

来源:51CTO

相关文章
|
23小时前
|
Java Maven Docker
Docker化Spring Boot3应用:从镜像构建到部署
本文介绍了如何在Linux上通过命令行构建和运行Spring Boot 3服务的Docker镜像。首先,基于Ubuntu创建包含JDK 21的基础镜像,然后使用Maven打包Spring Boot应用。接着,构建服务镜像,将应用和依赖添加到镜像中,并设置工作目录和暴露端口。最后,利用docker-compose部署服务,挂载宿主机目录以方便更新静态文件。Docker简化了应用部署,确保了不同环境的一致性。
23 2
Docker化Spring Boot3应用:从镜像构建到部署
|
5天前
|
存储 Linux Docker
CentOS7修改Docker容器和镜像默认存储位置
CentOS7修改Docker容器和镜像默认存储位置
|
7天前
|
存储 安全 开发者
如何删除 Docker 镜像、容器和卷?
【5月更文挑战第11天】
31 2
如何删除 Docker 镜像、容器和卷?
|
7天前
|
存储 安全 持续交付
【Docker 专栏】Docker 镜像的版本控制与管理
【5月更文挑战第9天】本文探讨了Docker镜像版本控制与管理的重要性,包括可重复性、回滚能力、协作开发和持续集成。常用方法有标签、构建参数和版本控制系统。管理策略涉及定期清理、分层管理和镜像仓库。语义化标签、环境变量和配置文件在版本控制中有应用。版本系统与Docker结合能跟踪历史和促进协作。注意点包括优化镜像大小、确保安全性和兼容性。案例分析和未来趋势展示了持续发展的镜像管理技术,为Docker应用的稳定与进步保驾护航。
【Docker 专栏】Docker 镜像的版本控制与管理
|
7天前
|
运维 安全 Docker
【Docker 专栏】Docker 镜像安全扫描与漏洞修复
【5月更文挑战第9天】Docker技术在软件开发和部署中带来便利,但其镜像安全问题不容忽视。本文探讨了Docker镜像安全扫描与漏洞修复,强调了镜像安全对应用和系统的重要性。文中介绍了静态和动态扫描方法,列举了软件漏洞、配置漏洞和恶意软件等常见安全问题,并提到了Clair和Trivy等扫描工具。修复策略包括更新软件、调整配置和重建镜像。此外,加强安全意识、规范镜像制作流程和定期扫描是管理建议。未来,将持续面对新的安全挑战,需持续研究和完善安全技术。
【Docker 专栏】Docker 镜像安全扫描与漏洞修复
|
7天前
|
Java Linux 数据安全/隐私保护
Docker自定义JDK镜像并拉取至阿里云镜像仓库全攻略
Docker自定义JDK镜像并拉取至阿里云镜像仓库全攻略
126 0
|
7天前
|
存储 弹性计算 运维
Docker数据集与自定义镜像:构建高效容器的关键要素
Docker数据集与自定义镜像:构建高效容器的关键要素
|
7天前
|
存储 缓存 运维
【Docker 专栏】Docker 镜像的分层存储与缓存机制
【5月更文挑战第8天】Docker 镜像采用分层存储,减少空间占用并提升构建效率。每个镜像由多个层组成,共享基础层(如 Ubuntu)和应用层。缓存机制加速构建和运行,通过检查已有层来避免重复操作。有效管理缓存,如清理无用缓存和控制大小,可优化性能。分层和缓存带来资源高效利用、快速构建和灵活管理,但也面临缓存失效和层管理挑战。理解这一机制对开发者和运维至关重要。
【Docker 专栏】Docker 镜像的分层存储与缓存机制
|
7天前
|
数据库 Docker 容器
【Docker 专栏】使用 Dockerfile 自动化构建 Docker 镜像
【5月更文挑战第8天】Dockerfile是构建Docker镜像的关键,它包含一系列指令,用于描述应用运行环境及所需软件包。通过自动化构建,能提高效率、保证可重复性并提升灵活性。确定基础镜像、安装依赖、设置环境后,执行Dockerfile生成镜像,用于应用程序部署。虽然需要熟悉Docker技术和应用细节,但其带来的益处使其成为现代软件开发和部署的重要工具。
【Docker 专栏】使用 Dockerfile 自动化构建 Docker 镜像
|
7天前
|
缓存 安全 数据安全/隐私保护
【Docker专栏】深入理解Docker镜像的构建与推送
【5月更文挑战第7天】本文介绍了Docker镜像的核心作用及基础概念,包括镜像作为容器模板的特性。文章详细阐述了Dockerfile的编写,例如设置基础镜像、工作目录、安装依赖及定义启动命令。通过`docker build`命令构建镜像,并提示了优化构建过程的技巧。此外,还讲解了如何将镜像推送到远程仓库,包括选择仓库、认证、标签和推送镜像的步骤,以及镜像安全性的考虑,如扫描漏洞和遵循最小权限原则。本文旨在帮助读者掌握Docker镜像的构建与推送,以高效管理容器化应用。
【Docker专栏】深入理解Docker镜像的构建与推送