ツール公開 データ取得日

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位で示した。

出典