Docker Hubでホストされている Official Image についてまとめます。

Official Image のソースは https://github.com/docker-library で管理されています。

以下、php を例にまとめます。

PHP

Docker hub

PHP Official Image

docker-library(GitHub)

README

PHP の 完全な README.md です。

特に以下の点に注意します。

Supported tags and respective Dockerfile links Note: the description for this image is longer than the Hub length limit of 25000, so the “Supported tags” list has been trimmed to compensate. See also docker/hub-feedback#238 and docker/roadmap#475.

See “Supported tags and respective Dockerfile links” at https://github.com/docker-library/docs/tree/master/php/README.md

現在サポートされているバージョンは Supported tags and respective Dockerfile links に明記するが、文字数の制限から https://github.com/docker-library/docs/tree/master/php/README.md を見るようにと記載されています。

NOTE
DOCKER OFFICIAL IMAGE であってもタグによってはサポート外になっているバージョンもあります。 {; .note}

Dockerfile

php の Dockerfile は https://github.com/docker-library/php で管理されています。

ベースイメージ

php:latest のベースイメージは Debian です。 また Debian のコードネームを指定したイメージが公開されています。

Debian

Docker Hub で配信されている Debian の Official Image(ベースイメージ)は、通常の Dockerfile を使ったビルドとは異なり、再現性(Reproducible)を重視した複数のリポジトリの連携によって管理されています。

全体像と役割一覧

役割 リポジトリ名 主な内容・目的
1. タグ定義・マニフェスト docker-library/official-images Docker Hub に公開するタグ(bookworm, bullseye 等)と RootFS のコミットハッシュの紐付け
2. RootFS 生成ツール debuerreotype/debuerreotype Debian の最小ルートファイルシステム(.tar.xz)を再現可能な形で作成するツール
3. ビルド済み RootFS 保管庫 debuerreotype/docker-debian-artifacts 生成された RootFS アーティファクトをアーキテクチャ別に管理するリポジトリ
4. Docker Hub ドキュメント docker-library/docs Docker Hub の Debian 概要ページに表示される説明文の管理

イメージ作成・公開の流れ

  1. RootFS の作成 (debuerreotype)
    • Docker 公式メンテナが開発した debuerreotype ツールを使い、Debian 公式パッケージから決定論的(再現可能)に最小限の RootFS (.tar.xz) を生成します
  2. アーティファクトの保存 (docker-debian-artifacts)
    • 作成された RootFS が docker-debian-artifacts リポジトリの各ブランチ(例: dist-amd64, dist-arm64)へコミットされます。
  3. 公式マニフェストの更新 (official-images)
    • official-images リポジトリ内の library/debian ファイルにて、最新のコミットハッシュおよびタグ定義が書き換えられます。
  4. Docker Hub へのビルド・配信
    • Docker 側の自動ビルドシステムが library/debian を検知し、FROM scratch に RootFS を展開したイメージを作成して Docker Hub へ配信します。

PHP 公式イメージと Debian の関係性

php:8.2-bookworm などの PHP 公式イメージは、上記で作成された Debian 公式イメージをベースとしてビルドされています。

タグ名とベースイメージの対応

php:8.2-bookworm のようにタグ名に -slim が付いていなくても、実際の Dockerfile の FROM 句では debian:bookworm-slim が指定されています。

# https://github.com/docker-library/php/blob/master/8.2/bookworm/cli/Dockerfile
FROM debian:bookworm-slim
PHP イメージのタグ Dockerfile 内の FROM 句 実際のベースイメージ
php:8.2-bookworm FROM debian:bookworm-slim Debian 12 (Bookworm) Slim 版
php:8.2-slim-bookworm FROM debian:bookworm-slim Debian 12 (Bookworm) Slim 版
php:8.2-alpine FROM alpine:3.xx Alpine Linux

NOTE
php:8.2-bookworm(通常版)と php:8.2-slim-bookworm(slim版)の違いは Debian 側ではなく、PHP 側に開発用ライブラリやビルドツールが含まれているか否か の違いです。

依存関係とレイヤー構造

両者のイメージは別々のリポジトリで管理され、レイヤーとして継承されています。

[ debuerreotype ]  ── RootFS (.tar.xz) を生成
       │
       ▼
[ docker-library/official-images ] ── library/debian マニフェスト
       │
       ▼
[ debian:bookworm-slim ] (ベースイメージ)
       │
       ├─ FROM 句で参照・レイヤー継承
       ▼
[ docker-library/php ] ── 各バージョンの Dockerfile
       │
       ▼
[ php:8.2-bookworm ] (PHP 公式イメージ)

自動更新とダイジェスト(SHA256)の伝播

ベースイメージ(Debian)にセキュリティ修正等のアップデートが入った場合、PHP 公式イメージにも自動的に変更が適用されます。

  1. Debian の更新
    • OS 側の修正により debian:bookworm-slim が再ビルドされ、新しい SHA256 ダイジェストが割り当てられる。
  2. 自動検知とトリガー
    • Docker Official Images のビルドパイプラインがベースイメージの更新を検知する。
  3. PHP の自動再ビルド*
    • php:8.2-bookworm の Dockerfile が最新の debian:bookworm-slim ダイジェストを取り込んで自動的に再ビルド・パブリッシュされる。

まとめ

  • Debian イメージには単一の Dockerfile リポジトリが存在せず、debuerreotype による RootFS 生成と official-images によるマニフェストで管理されています
  • PHP 公式イメージは debian:bookworm-slim を参照しており、Debian 側が更新されるとパイプラインによって PHP イメージも自動的に最新の Debian レイヤーを取り込んで再ビルドされます