STEP 7:Docker Hubとイメージの取得

🐳 STEP 7: Docker Hubとイメージの取得

Docker Hubの使い方、イメージの検索と取得、タグの理解

📋 このステップで学ぶこと

  • Docker Hubとは何か、その役割と機能
  • docker searchコマンドとWebサイトでのイメージ検索
  • docker pullコマンドの使い方とオプション
  • イメージ名の構造(レジストリ/リポジトリ:タグ)
  • タグの種類と選び方のベストプラクティス
  • 公式イメージと非公式イメージの違い
  • イメージの管理(一覧表示、削除、クリーンアップ)

🌐 1. Docker Hubとは

1-1. Docker Hubの概要

Docker Hubは、Dockerイメージを保存・共有するためのクラウドサービスです。
世界最大のコンテナイメージレジストリで、誰でも無料で利用できます。

📦 GitHubで例えると…

GitHub = ソースコードを保存・共有するサービス
Docker Hub = Dockerイメージを保存・共有するサービス

GitHubからソースコードをcloneするように、
Docker Hubからイメージをpull(ダウンロード)します。

1-2. Docker Hubでできること

1️⃣ イメージ検索

数百万のイメージから
必要なものを検索

2️⃣ イメージ取得

docker pull
簡単にダウンロード

3️⃣ イメージ公開

自作イメージを
世界に公開可能

4️⃣ 自動ビルド

GitHubと連携して
自動でイメージビルド

1-3. Docker Hubの規模

【Docker Hub の統計(2024年時点)】 公開イメージ数 :1,000万以上 年間ダウンロード数:1,300億回以上 ユーザー数 :1,300万人以上 公式イメージ :200以上 → 世界最大のコンテナイメージレジストリ

1-4. Docker Hubアカウント

Docker Hubは無料で利用できますが、アカウントを作成するとより多くの機能が使えます。

機能 未ログイン 無料アカウント
イメージのダウンロード 100回/6時間 200回/6時間
パブリックリポジトリ 利用不可 無制限
プライベートリポジトリ 利用不可 1つまで
イメージのアップロード 不可 可能
✅ アカウント作成の推奨

学習中は未ログインでも十分ですが、本格的に使う場合は無料アカウントを作成しましょう。
公式サイト:https://hub.docker.com/

1-5. その他のコンテナレジストリ

Docker Hub以外にも、イメージを保存・共有できるサービスがあります。

レジストリ 説明
Docker Hub デフォルトのレジストリ。最も広く使われている。
GitHub Container Registry GitHubが提供。GitHubリポジトリと統合しやすい。
Amazon ECR AWSが提供。AWSサービスとの連携が容易。
Google Container Registry GCPが提供。Google Cloudとの連携が容易。
Azure Container Registry Microsoftが提供。Azureとの連携が容易。
💡 このコースでは

Docker Hubを使用します。これがデフォルトのレジストリで、
特に指定しなければ自動的にDocker Hubからイメージを取得します。

🔍 2. イメージの検索方法

2-1. docker searchコマンド

docker searchコマンドで、ターミナルからイメージを検索できます。

docker search nginx
📝 コマンドの意味
  • docker search :Docker Hubでイメージを検索するコマンド
  • nginx :検索キーワード
NAME DESCRIPTION STARS OFFICIAL nginx Official build of Nginx. 19521 [OK] bitnami/nginx Bitnami nginx Docker Image 186 ubuntu/nginx Nginx, a high-performance reverse proxy… 108 nginx/nginx-ingress NGINX and NGINX Plus Ingress Controllers… 91 nginx/nginx-prometheus-exporter NGINX Prometheus Exporter for NGINX and… 40 nginxinc/nginx-unprivileged Unprivileged NGINX Dockerfiles 145

2-2. 検索結果の読み方

列名 意味
NAME イメージ名。/が含まれる場合は「ユーザー名/イメージ名」の形式。
DESCRIPTION イメージの説明。どのような用途か確認。
STARS ユーザーからの評価(いいね数)。多いほど人気・信頼性が高い。
OFFICIAL [OK]なら公式イメージ。Docker社が認定した信頼できるイメージ。

2-3. 検索オプション

# 公式イメージのみ検索 docker search –filter “is-official=true” nginx
📝 コマンドの意味
  • --filter "is-official=true" :公式イメージのみに絞り込み
# スター数100以上のイメージを検索 docker search –filter “stars=100” nginx
# 検索結果の表示数を制限(デフォルト25件) docker search –limit 5 nginx
# 複数のフィルタを組み合わせ docker search –filter “is-official=true” –filter “stars=1000” python

2-4. Docker Hub Webサイトでの検索

より詳しい情報を得るには、Webサイトでの検索がおすすめです。

【Docker Hub Webサイトでの検索手順】 1. https://hub.docker.com/ にアクセス 2. 上部の検索バーに「nginx」と入力してEnter 3. 検索結果から目的のイメージをクリック 4. イメージの詳細ページで確認できる情報: ・Overview:詳しい説明とドキュメント ・Tags:利用可能なタグ(バージョン)一覧 ・使用例(docker run のコマンド) ・Dockerfile(イメージの作り方) ・ダウンロード数、更新日時
💡 Webサイトのメリット
  • 詳しいドキュメントと使用例が確認できる
  • 利用可能なタグの一覧が見やすい
  • 最終更新日時がわかる(古いイメージは避ける)
  • 脆弱性情報が確認できる場合もある

2-5. 検索時のチェックポイント

⚠️ イメージ選択時の注意点
  • 公式イメージを優先:[OFFICIAL]マーク付きを選ぶ
  • スター数を確認:1,000以上なら安心、100未満は要注意
  • 更新日時を確認:1年以上更新されていないものは避ける
  • ダウンロード数を確認:多いほど多くの人に使われている
  • 説明を読む:目的に合っているか確認

⬇️ 3. docker pull – イメージの取得

3-1. docker pullの基本

docker pullコマンドで、Docker Hubからイメージをダウンロードします。

docker pull nginx
📝 コマンドの意味
  • docker pull :イメージをダウンロードするコマンド
  • nginx :ダウンロードするイメージ名
Using default tag: latest latest: Pulling from library/nginx a2abf6c4d29d: Pull complete a9edb18cadd1: Pull complete 589b7251471a: Pull complete 186b1aaa4aa6: Pull complete b4df32aa5a72: Pull complete a0bcbecc962e: Pull complete Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest

3-2. ダウンロード進捗の読み方

表示 意味
Using default tag: latest タグを指定しなかったので、latestタグが使われる
Pulling from library/nginx library/nginx(公式イメージ)から取得中
a2abf6c4d29d: Pull complete レイヤーID a2abf… のダウンロード完了
Already exists このレイヤーは既にローカルにある(再ダウンロード不要)
Digest: sha256:... イメージの一意な識別子(ダイジェスト)
Status: Downloaded... ダウンロード完了

3-3. タグを指定してダウンロード

# 特定のバージョンを指定 docker pull nginx:1.25
📝 コマンドの意味
  • nginx:1.25 :イメージ名:タグ の形式でバージョンを指定
# Alpine版を指定 docker pull nginx:1.25-alpine # slim版を指定 docker pull python:3.10-slim # 完全なバージョン番号を指定 docker pull python:3.10.13

3-4. タグを省略した場合

【タグ省略時の動作】 docker pull nginx ↓ 内部的には docker pull nginx:latest ・タグを省略すると「latest」が自動的に使われる ・latest = 最新版という意味 ・ただし、latestは予告なく変更される可能性がある
⚠️ latestタグの注意点

latestは「最新版」を意味しますが、いつ更新されるかわかりません。
昨日と今日で中身が違う可能性があります。
本番環境では必ずバージョンを指定しましょう。

3-5. ダウンロードしたイメージの確認

docker images
📝 コマンドの意味

docker images :ローカルにあるイメージの一覧を表示

REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest a6bd71f48f68 2 weeks ago 187MB nginx 1.25 b5d3f3e104ca 2 weeks ago 187MB nginx 1.25-alpine d5b5c9e8d8f1 2 weeks ago 43.2MB python 3.10-slim c1b5f3e2a4d3 3 weeks ago 125MB
✅ 確認ポイント
  • REPOSITORY:イメージ名
  • TAG:バージョン(タグ)
  • IMAGE ID:イメージの一意なID
  • CREATED:イメージが作成された日時
  • SIZE:イメージのサイズ

🏷️ 4. イメージ名とタグの構造

4-1. イメージ名の完全な形式

Dockerイメージ名には、完全な形式があります。

【イメージ名の完全な形式】 レジストリ / リポジトリ : タグ 例: docker.io/library/nginx:1.25 ↓ docker.io = レジストリ(Docker Hub) library = 名前空間(公式イメージは library) nginx = イメージ名 1.25 = タグ(バージョン)

4-2. 省略形の仕組み

普段使う短い形式は、省略された形です。

入力 実際の完全形式
nginx docker.io/library/nginx:latest
nginx:1.25 docker.io/library/nginx:1.25
bitnami/nginx docker.io/bitnami/nginx:latest
ghcr.io/owner/image:v1 ghcr.io/owner/image:v1(GitHub Container Registry)
💡 覚えておくべきルール
  • レジストリ省略 → Docker Hub(docker.io)が使われる
  • 名前空間省略(/なし) → 公式イメージ(library)
  • タグ省略 → latest が使われる

4-3. タグの種類と意味

タグ形式 意味と例
latest 最新版(デフォルト)。内容は予告なく変わる可能性あり。
1.25 メジャー.マイナー版。1.25系の最新パッチが適用される。
1.25.3 完全なバージョン番号。内容が固定される(推奨)。
alpine Alpine Linuxベースの軽量版。
1.25-alpine バージョン1.25のAlpine版。
slim 不要なパッケージを削除した軽量版。
bookworm / bullseye Debianのバージョン名(bookworm=12, bullseye=11)

4-4. Pythonイメージのタグ例

Pythonイメージには多くのバリエーションがあります。

【Pythonイメージのタグ例】 python:3.10 # Python 3.10系(Debianベース、フル版) python:3.10.13 # Python 3.10.13(完全固定) python:3.10-slim # Python 3.10系のSlim版(約1/7のサイズ) python:3.10-alpine # Python 3.10系のAlpine版(約1/18のサイズ) python:3.10-slim-bookworm # Slim版 + Debian Bookworm python:3.11 # Python 3.11系 python:latest # 最新Python(本番では非推奨) サイズ比較: python:3.10 約920MB python:3.10-slim 約125MB python:3.10-alpine 約49MB

4-5. タグ選択のベストプラクティス

❌ 避けるべき選択
  • nginx(タグなし)
  • nginx:latest
  • 更新が1年以上前のイメージ

理由:予期しない更新で動作が変わる可能性

✅ 推奨する選択
  • nginx:1.25(メジャー固定)
  • nginx:1.25.3(完全固定)
  • nginx:1.25-alpine(軽量版)

理由:再現性と安定性を確保

💡 環境別の推奨

開発環境:メジャーバージョン固定(例:python:3.10
本番環境:完全固定 + 軽量版(例:python:3.10.13-slim

✅ 5. 公式イメージと非公式イメージ

5-1. 公式イメージ(Official Images)

公式イメージは、Docker社が認定し、品質とセキュリティが保証されたイメージです。

🏆 公式イメージの特徴
  • Docker社が厳格にレビュー・認定
  • 定期的にセキュリティアップデート
  • 充実したドキュメント
  • 検索結果に[OFFICIAL]マーク
  • イメージ名に/(スラッシュ)がない
# 公式イメージの例(名前に / がない) docker pull nginx docker pull python docker pull postgres docker pull mysql docker pull node docker pull redis docker pull ubuntu docker pull alpine

5-2. 非公式イメージ(Community Images)

非公式イメージは、個人や組織が独自に公開したイメージです。

👥 非公式イメージの特徴
  • 個人・組織が独自に公開
  • 公式にない追加機能が含まれることも
  • セキュリティは作成者次第
  • イメージ名に/(スラッシュ)がある
# 非公式イメージの例(ユーザー名/イメージ名 の形式) docker pull bitnami/nginx # Bitnami社が提供 docker pull ubuntu/nginx # Ubuntu公式チームが提供 docker pull linuxserver/nginx # Linuxserver.ioが提供 docker pull mycompany/myapp # 自社用カスタムイメージ

5-3. 公式 vs 非公式の比較

項目 公式イメージ 非公式イメージ
信頼性 Docker社が認定。高い信頼性。 作成者による。スター数で判断。
セキュリティ 定期的にスキャン・更新。 作成者次第。自己責任。
ドキュメント 充実している。 ある場合とない場合がある。
機能 標準的な構成。 カスタマイズ・追加機能あり。
名前の形式 nginx(/なし) bitnami/nginx(/あり)

5-4. イメージ選択のガイドライン

💡 選択基準

基本ルール:公式イメージを優先

  • まず公式イメージで要件を満たせるか確認
  • 本番環境では特に公式を使う

非公式を検討する場合

  • 公式にない特殊な機能が必要
  • 信頼できる組織が提供(Bitnami、Linuxserverなど)
  • スター数が多く(1,000以上)、活発にメンテナンス
⚠️ 避けるべきイメージ
  • 出所不明のイメージ
  • スター数が100未満
  • 最終更新が1年以上前
  • ドキュメントがない

🗑️ 6. イメージの管理コマンド

6-1. イメージの一覧表示

# 全てのイメージを表示 docker images
# イメージ名でフィルタ docker images nginx
# イメージIDのみ表示 docker images -q
# 全ての情報を省略なしで表示 docker images –no-trunc

6-2. イメージの削除

# イメージ名:タグで削除 docker rmi nginx:1.25
📝 コマンドの意味
  • docker rmi :イメージを削除するコマンド(rm image の略)
  • nginx:1.25 :削除するイメージ名:タグ
# IMAGE IDで削除 docker rmi a6bd71f48f68
# 複数のイメージを一度に削除 docker rmi nginx:1.25 nginx:1.24 python:3.9
# 強制削除(コンテナが使用中でも削除) docker rmi -f nginx:1.25
⚠️ 削除の注意点

コンテナが使用中のイメージは通常削除できません。
先にコンテナを停止・削除してから、イメージを削除しましょう。
-fオプションで強制削除できますが、慎重に使いましょう。

6-3. 不要なイメージの一括削除

# タグなし(dangling)イメージを削除 docker image prune
📝 コマンドの意味

docker image prune :タグが付いていない「dangling」イメージを削除
※ビルド時に生成される中間イメージなどが対象

# 使用されていない全てのイメージを削除 docker image prune -a
# 確認なしで削除 docker image prune -a -f

6-4. ディスク使用量の確認

# Dockerのディスク使用量を確認 docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 8 3 2.5GB 1.8GB (72%) Containers 3 3 512B 0B (0%) Local Volumes 2 1 256MB 128MB (50%) Build Cache 15 0 1.2GB 1.2GB
# 全ての未使用リソースを一括削除 docker system prune
# ボリュームも含めて削除(注意:データも消える) docker system prune –volumes
⚠️ docker system prune の注意

このコマンドは強力で、以下を全て削除します:
・停止中のコンテナ
・未使用のネットワーク
・danglingイメージ
・ビルドキャッシュ

実行前に内容を確認しましょう。

💪 7. 練習問題

練習問題 1 基礎

Docker Hubで「redis」を検索してください

コマンドラインで検索し、公式イメージのスター数を確認してください。

【解答】
# redisを検索 docker search redis # 公式イメージのみ検索 docker search –filter “is-official=true” redis

公式のredisイメージには[OK]マークがあり、スター数は12,000以上です。

練習問題 2 基礎

nginxイメージを3つのタグでダウンロードしてください

nginx:latest、nginx:1.25、nginx:1.25-alpine をダウンロードし、サイズを比較してください。

【解答】
# 3つのイメージをダウンロード docker pull nginx:latest docker pull nginx:1.25 docker pull nginx:1.25-alpine # サイズを比較 docker images | grep nginx

結果例:latest(約187MB)、1.25(約187MB)、1.25-alpine(約43MB)
Alpine版は約1/4のサイズです。

練習問題 3 基礎

ローカルのイメージ一覧を確認してください

ダウンロードしたイメージの一覧と、合計サイズを確認してください。

【解答】
# イメージ一覧を表示 docker images # ディスク使用量を確認 docker system df
練習問題 4 応用

異なるバージョンのPythonイメージを取得してください

タスク:

  1. python:3.9、python:3.10、python:3.11をダウンロード
  2. 各イメージでPythonのバージョンを確認
  3. サイズを比較
【解答】
# ダウンロード docker pull python:3.9 docker pull python:3.10 docker pull python:3.11 # バージョン確認(–rmで実行後コンテナを自動削除) docker run –rm python:3.9 python –version docker run –rm python:3.10 python –version docker run –rm python:3.11 python –version # サイズ確認 docker images | grep python
練習問題 5 応用

タグを指定してRedisコンテナを起動してください

タスク:

  1. redis:7-alpineでコンテナを起動
  2. コンテナ名は「my-redis」、ポート6379で公開
  3. ログを確認
  4. 停止・削除
【解答】
# Redisコンテナを起動 docker run -d –name my-redis -p 6379:6379 redis:7-alpine # 動作確認 docker ps # ログ確認 docker logs my-redis # 停止・削除 docker stop my-redis docker rm my-redis
練習問題 6 応用

公式と非公式のnginxイメージを比較してください

タスク:

  1. nginx(公式)とbitnami/nginx(非公式)を検索
  2. 両方をダウンロード
  3. サイズを比較
【解答】
# 検索 docker search nginx # ダウンロード docker pull nginx docker pull bitnami/nginx # サイズ比較 docker images | grep nginx

公式nginx(約187MB)、bitnami/nginx(約100MB程度)
Bitnamiはカスタマイズされており、構成が異なります。

練習問題 7 発展

不要なイメージを削除してください

タスク:

  1. 現在のディスク使用量を確認
  2. 使用していないイメージを特定
  3. 不要なイメージを削除
  4. 削除後のディスク使用量を確認
【解答】
# 現在のディスク使用量 docker system df # 詳細表示 docker system df -v # 特定のイメージを削除 docker rmi nginx:1.25 # または未使用イメージを一括削除 docker image prune -a # 削除後の確認 docker system df
練習問題 8 発展

イメージの完全な名前を確認してください

docker pull nginx を実行した時、実際にどこからダウンロードされるか確認してください。

【解答】
# イメージをダウンロード docker pull nginx # 出力の最後の行を確認 # docker.io/library/nginx:latest

完全な名前の解読:
docker.io = Docker Hub(レジストリ)
library = 公式イメージの名前空間
nginx = イメージ名
latest = タグ

📝 STEP 7 のまとめ

✅ このステップで学んだこと
  • Docker Hubは世界最大のイメージレジストリ
  • docker searchとWebサイトでイメージを検索
  • docker pullでイメージを取得
  • イメージ名はレジストリ/リポジトリ:タグの構造
  • 公式イメージを優先して使う
  • latestは避け、バージョンを固定する
  • docker rmidocker image pruneで不要なイメージを削除
📊 今回学んだコマンド一覧
コマンド 機能
docker search キーワード Docker Hubでイメージを検索
docker pull イメージ:タグ イメージをダウンロード
docker images ローカルのイメージ一覧を表示
docker rmi イメージ:タグ イメージを削除
docker image prune 未使用のイメージを一括削除
docker system df ディスク使用量を確認
💡 重要ポイント

Docker Hubは、Dockerエコシステムの心臓部です。
適切なイメージを選ぶことが、安全で効率的なDocker利用の第一歩です。

3つの鉄則:
1. 公式イメージを優先
2. バージョンを固定(latestは使わない)
3. 定期的に不要なイメージを削除

🎯 次のステップの予告

次のSTEP 8では、「コンテナのライフサイクル管理」を学びます。

  • docker createとdocker start(コンテナの作成と起動を分離)
  • docker exec(実行中のコンテナでコマンド実行)
  • docker inspect(詳細情報の確認)
  • コンテナのライフサイクル全体を理解

コンテナをより細かく制御できるようになりましょう!

📝

学習メモ

Docker・コンテナ技術入門 - Step 7

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE