Docker Hub の公式イメージ181個で、累計 pull の6割強は上位10個。最終更新が1年以上前のものは46個あった
Docker Hub の公式イメージ(Docker Official Images)は、nginx や postgres のように誰もが使うものから、ほとんど名前を聞かないものまである。この記事で確かめたのは、公式イメージ181個のうち、累計 pull 数の上位10個が全体の何割を占めるか。最終更新が1年以上前のものは何個あるかだ。
答えを先に書く。2026年10月1日に公開 API から取得した181個の累計 pull 数は合計で約1,700億回(169,971,091,644)で、上位10個がその62.7%を占めた。上位50個では96.7%になり、51位以下の131個は合わせて3.3%だった。最終更新(API の last_updated)が2025年10月1日より前のものは46個。そのうち38個は、説明文が「DEPRECATED」で始まる非推奨のイメージだった。残る8個は、そうした表記が無いまま更新が1年以上止まっている。上位10個は、すべて直近3か月以内に更新されていた。
数えたのは Docker Hub に表示される累計 pull 数で、使われている量そのものではない。pull には CI やビルドの自動取得が含まれうる。更新の古さは「最終更新が古い」ことしか示さず、放置されているかどうかは判断していない。数え方の限界は後半にまとめた。
上位10個で62.7%、上位50個で96.7%
取得できた181個の累計 pull 数を大きい順に並べ、順位の区分ごとに合計した。
| 順位の区分 | イメージ数 | pull の合計 | 全体に占める割合 |
|---|---|---|---|
| 上位10個 | 10 | 約1,066億 | 62.7% |
| 11〜50位 | 40 | 約577億 | 33.9% |
| 51位以下 | 131 | 約57億 | 3.3% |
累計で見ると、1位だけで7.9%、上位3個で23.3%、上位5個で37.5%、上位20個で82.9%になる。10億回以上のイメージは30個あり、この30個で90.5%を占める。1億回未満のイメージは112個で、全体の約6割だ。pull 数の中央値(181個の真ん中)は約4,135万回、最小は espocrm の66,173回、最大は nginx の約134億回だった。
上位10個は次のとおり。
| 順位 | イメージ | 累計 pull | 全体に占める割合 | 最終更新 |
|---|---|---|---|---|
| 1 | nginx | 約134.2億 | 7.9% | 2026-09-29 |
| 2 | memcached | 約133.8億 | 7.9% | 2026-09-23 |
| 3 | busybox | 約128.7億 | 7.6% | 2026-09-23 |
| 4 | alpine | 約123.0億 | 7.2% | 2026-09-18 |
| 5 | postgres | 約116.9億 | 6.9% | 2026-09-29 |
| 6 | redis | 約113.6億 | 6.7% | 2026-09-29 |
| 7 | ubuntu | 約100.8億 | 5.9% | 2026-09-18 |
| 8 | python | 約93.1億 | 5.5% | 2026-09-29 |
| 9 | node | 約70.5億 | 4.1% | 2026-09-23 |
| 10 | mysql | 約51.6億 | 3.0% | 2026-09-29 |
1位と2位の差は約0.4億回(0.3%)しかない。順位は取得した時点のもので、pull 数はこの間も増え続ける。
最終更新が1年以上前のものは46個
最終更新(last_updated)を、取得日の2026年10月1日を基準に3つに分けた。3か月以内は2026年7月1日以降、1年以内は2025年10月1日以降、1年超はそれより前とした。
| 最終更新 | イメージ数 | pull の合計 | 全体に占める割合 |
|---|---|---|---|
| 3か月以内 | 133 | 約1,659億 | 97.6% |
| 3か月超〜1年以内 | 2 | 約212万 | 0.001% |
| 1年超 | 46 | 約41億 | 2.4% |
順位の区分と掛け合わせると、次のとおり。
| 順位の区分 | 3か月以内 | 3か月超〜1年以内 | 1年超 |
|---|---|---|---|
| 上位10個 | 10 | 0 | 0 |
| 11〜50位 | 36 | 0 | 4 |
| 51位以下 | 87 | 2 | 42 |
1年超の46個は、11〜50位に4個(centos・consul・vault・mongo-express)、51位以下に42個ある。51位以下では131個のうち32.1%が1年超だ。46個の pull の合計は約41億回で、そのうち約31億回が上位50位以内の4個、約10億回が51位以下の42個だ。46個の中で最も古い最終更新は scratch の2013年6月25日、次いで2016年3月の docker-dev、2016年4月の ubuntu-debootstrap・ubuntu-upstart が続く。
1年超の46個のうち、38個は非推奨の表記がある
取得した各イメージの説明文(description)を見ると、「DEPRECATED」で始まるものが181個中41個あった。たとえば centos は「DEPRECATED; The official build of CentOS.」、jenkins は「DEPRECATED; use “jenkins/jenkins:lts” instead」と書かれている。API の status_description は181個すべてが active で、非推奨かどうかはこの項目では区別できない。この記事での「非推奨」は、説明文の先頭が「DEPRECATED」であることを指す。
41個の内訳は、最終更新が1年超のものが38個、3か月超〜1年以内が1個(unit)、3か月以内が2個(emqx・liquibase)。41個の pull の合計は約24億回(1.4%)で、上位50位以内には centos(26位)と mongo-express(48位)の2個がある。
1年超で非推奨の表記が無いのは、次の8個だ。
| 順位 | イメージ | 最終更新 |
|---|---|---|
| 29 | consul | 2024-03-16 |
| 39 | vault | 2024-03-16 |
| 88 | rockylinux | 2024-05-30 |
| 133 | cirros | 2024-09-27 |
| 142 | hello-seattle | 2019-01-03 |
| 144 | gazebo | 2025-04-09 |
| 162 | hola-mundo | 2019-01-04 |
| 177 | scratch | 2013-06-25 |
この8個がなぜ更新されていないのかは、今回は確かめていない。
数え方と、言えないこと
- pull 数の意味。 Docker のドキュメントは、課金・利用制限のための pull を「バージョンの確認と、それに続くダウンロード」、マルチアーキテクチャのイメージは「アーキテクチャごとに1回」と定義している。ただし、API の
pull_countが同じ定義で数えた値かどうかは、確認できた範囲では書かれていない。同じドキュメントは、CI/CD などの自動化ツールの pull を別に数える記述を示していない。このため、この記事の pull 数には機械的な取得が含まれうるし、含まれる割合は分からない。個人の利用者数・利用されている量・人気とは言えない。 - 更新の古さ。
last_updatedが何の日時か(イメージの最後の push か、メタデータの更新も含むか)は、Docker の API ドキュメントで確認できなかった。別の項目last_modifiedで同じ区切りにすると、1年超は40個になる(3か月以内135個、3か月超〜1年以内6個)。46個という数はlast_updatedで数えたときのものだ。 - 更新が古いことの意味。 更新が止まっていても、安定していて変更が要らないイメージかもしれない。古さから、放置されている・使うべきでないとは言えない。非推奨の表記があるものは、説明文のとおり別のイメージへの移行などが案内されている。
- 対象。 数えたのは
library名前空間の181個で、API のcountと一致した。Docker Hub 上の認証済みパブリッシャーや他のイメージは含まない。取得は2026年10月1日の1回で、他の日の値は確かめていない。 - 実際に動かしていない。 この記事は公開 API の数字を集計したもので、各イメージを pull して試したわけではない。
まとめ
2026年10月1日時点の Docker Hub 公式イメージ181個では、累計 pull の62.7%が上位10個、96.7%が上位50個に集まっていた。最終更新が1年以上前のものは46個(2.4%の pull)で、うち38個は非推奨の表記があり、8個は表記が無い。上位10個はすべて直近3か月以内に更新されている。pull には自動取得が含まれうるため、集中の度合いは「Docker Hub 上で数えられた取得回数の偏り」までしか言えない。
付録A 取得と集計の方法
- 取得:
https://hub.docker.com/v2/repositories/library/?page_size=100&ordering=<並び>(認証なし)を、2026-10-01に並びを変えて4回取得した。並びはpull_count(降順)、-pull_count(昇順)、name、-name。User-Agent は連絡先を含まない固定の文字列で、リクエストの間は1秒空けた。 - ページ送りができなかったこと:
countは181だが、2ページ目(page=2)は匿名では「pagination offset too large for anonymous requests」(HTTP 403)になった。ログインでこれを避けることはせず、並びを変えた先頭100件を重ねて全件を取った。 - 全件の組み立て:
pull_count降順の先頭100件(1〜100位)と、昇順の先頭100件のうち降順側に無い81件(101〜181位)を合わせた。2つの重なりは19件で、181件・名前の重複なし・countと一致を確認した。nameの昇順・降順の先頭100件(合わせて181件)は、名前の集合の照合に使い、すべて取得済みの181件に含まれていた。 - 取得時点のずれ: 同じイメージを別の取得で比べると、pull 数が増えているものがあった(最大の相対差は0.00023%)。順位に影響する差ではないと確かめ、順位と集計は降順側・昇順側の値で行った。
- 検算: 全181件で
pull_countは整数、last_updatedは文字列で欠損(null)なし、pull_countが0以下のものなし、namespaceはlibrary、is_privateは偽、status_descriptionはactive。集計はscripts/dockerhub_library_aggregate.py、これとは別実装の再計算(生ファイルの文字列から正規表現で取り出し、分数で計算)はscripts/dockerhub_library_recheck.pyで行い、合計・各区分の割合・件数・名前の一覧・非推奨の件数まで一致した。取得はscripts/dockerhub_library_fetch.py。 - 保存:
data/cache/docker-hub/(取得した4ファイルと集計結果derived-dockerhub-library-2026-10-01.json)。
付録B 集計の定義
- 順位: 累計 pull の降順(同数は名前順)。
- 最終更新の区分:
last_updatedの日付を、取得日(2026-10-01)から見て 2026-07-01 以降=3か月以内、2025-10-01 以降=1年以内、それより前=1年超とした。境界から1日以内のイメージは無かった。 - 非推奨: 説明文(
description)の先頭が「DEPRECATED」(大文字小文字を区別しない)。説明文のどこかに「deprecated」を含むが先頭ではないものは無かった。 - pull 数の表記: 億は10^8。割合は丸めていない値から計算して小数第1位で示した。
出典
- Docker Hub 公開 API(library 名前空間の一覧。2026年10月1日取得): https://hub.docker.com/v2/repositories/library/?page_size=100&ordering=pull_count
- Docker 公式ドキュメント「Docker Hub の pull の使用量と制限」(pull の定義。2026年10月1日確認): https://docs.docker.com/docker-hub/usage/pulls/
- Docker 公式ドキュメント「Docker Hub API リファレンス」(名前空間のリポジトリ一覧のエンドポイント。フィールドの定義は確認できなかった。2026年10月1日確認): https://docs.docker.com/reference/api/hub/latest/
- Docker 公式ドキュメント「信頼できるコンテンツ」(Docker Official Images の説明。2026年10月1日確認): https://docs.docker.com/docker-hub/image-library/trusted-content/