1️⃣ GHCR の特徴
| 項目 | 内容 |
|---|---|
| URL | ghcr.io/<ユーザ名>/<イメージ名> |
| 認証 | GitHub アカウント + Personal Access Token (PAT) |
| 可視性 | Public / Private を選択可能 |
| 利点 | GitHub Actions と統合、自動ビルド・自動配布が簡単、受講者限定配布に最適 |
2️⃣ GHCR と Docker Hub の違い
| 項目 | Docker Hub | GHCR |
|---|---|---|
| 認証 | Docker ID | GitHub アカウント + トークン |
| アクセス制御 | Public / Private | Public / Private + GitHub Organization の権限管理 |
| CI/CD 連携 | 外部CIと連携 | GitHub Actionsと完全統合 |
| 教育・研究用途 | 公開教材に向く | 限定配布に最適 |
3️⃣ 基本的な使い方
① Docker から GHCR にログイン
docker login ghcr.io -u <GitHubユーザ名>
# パスワードには Personal Access Token を使用
② イメージのタグ付け
docker tag design-env:latest ghcr.io/<GitHubユーザ名>/design-env:latest
③ GHCR へ push
docker push ghcr.io/<GitHubユーザ名>/design-env:latest
④ 受講者が pull する場合
docker login ghcr.io -u <受講者のGitHubユーザ名>
docker pull ghcr.io/<GitHubユーザ名>/design-env:latest
-
Private の場合は アクセス権を与えた GitHub ユーザのみ pull 可能
-
Public にすれば誰でも pull 可能
4️⃣ 教育用途でのおすすめ
-
受講者限定配布 → GHCR Private + GitHub Organization/Collaborator で管理
-
公開教材配布 → GHCR Public
-
自動更新 → GitHub Actions で push する仕組みを構築
GHCR におけるアクセス権・許可スコープ(概要)
-
コンテナイメージの “読み込み(pull)”/ “書き込み(push)”/ “削除(delete)” を制御するスコープとして、以下があります:
-
read:packages→ パッケージ(イメージ等)を 読む 権限。 willvelida.com+3docs.deeptraq.ai+3hemp0r.dev+3 -
write:packages→ パッケージを 書き込む/アップロードする 権限。 docs.deeptraq.ai+1 -
delete:packages→ パッケージを 削除できる 権限。 docs.deeptraq.ai
-
-
また、プライベートリポジトリ/プライベートパッケージの利用時には、リポジトリ自体への読み権限(
repoスコープ等)も必要となる場合があります。 docs.deeptraq.ai -
パッケージ(イメージ)がどの “可視性/アクセスモデル” を持つか(公開/非公開)も設定可能です。例えば、プライベートパッケージの場合はリンク先のリポジトリのアクセス権を継承することが多いです。 Zenn
? GHCR でアクセス権を与える手順(運用者側)
講習会で「参加者がこのリポジトリ/イメージをプルできる」「(運営者/助教が)プッシュできる」といった流れを設計する場合、以下を参考にしてください。
(A) トークンを作成
-
GitHub の「設定 → Developer settings → Personal access tokens(または Fine‑grained tokens)」から新しいトークンを作成。 docs.deeptraq.ai+2hemp0r.dev+2
-
必要なスコープを選択:
-
参加者が“プルのみ”であれば
read:packagesを付与。 -
プッシュもさせる運用なら
write:packagesを付与。 -
削除まで可能にするときは
delete:packagesを追加。 -
プライベートリポジトリからイメージを扱う場合は
repoスコープも検討。 docs.deeptraq.ai+1
-
-
トークン発行後、出力されたトークンを安全に保存(あとから表示されない)し、参加者/運営利用のために GitHub リポジトリ Secrets や CI/CD の環境変数に登録しておく。 Qiita
(B) イメージ/パッケージの可視性・アクセス設定
-
リポジトリに紐づいたパッケージを GHCR に配置したとき、デフォルトでリポジトリの可視性・アクセス権を継承することがあります。 Zenn+1
-
イメージを “Public(公開)” にしたい場合は、パッケージの設定から「公開」に切り替えることができます。例えば Qiita 記事では“パブリック・イメージを公開”の手順が説明されています。 Qiita
-
“Private(非公開)” のまま利用する場合、そのイメージをプルできるユーザー(参加者)に対してアクセスを付与する必要があります。具体的には、リポジトリ/組織の設定でチーム・ユーザーに対し「Read」権限以上を与えるなど。
(C) 認証・利用者向け手順案内
-
Docker や CI/CD から GHCR を使う場合、
docker login ghcr.ioを使って認証し、その後イメージをdocker pull ghcr.io/OWNER/IMAGE:TAGとして利用します。 docs.deeptraq.ai+1 -
参加者向けには:
echo $TOKEN | docker login ghcr.io -u USERNAME --password-stdin
docker pull ghcr.io/OWNER/IMAGE:TAG
などの手順を案内するとスムーズです。
-
認証トークン(PAT)を “read:packages” のみで発行し、プル専用にすることで安全性が高まります。 hemp0r.dev
? 講習会での運用におけるポイント・注意点
-
参加者が「プルだけ使える」ように設定するなら、トークンに
read:packagesのみ付与するのがベストです。プッシュまで参加者にさせるなら別途write:packagesを検討。 -
もし運営側(講師/助教)がイメージを更新・配布する立場なら、運営者用に
write:packagesを持ったトークンを用意しておくとよいです。 -
参加者の PC/Docker 環境が整っていること、トークンの扱いを誤らないこと(漏洩しないように)を事前に案内。
-
公開イメージにするか非公開にするかを決定しておく。講習用イメージを非公開で提供し、参加者専用にトークンでアクセスさせる運用も可能です。
-
GitHub Actions/CI の場合、ワークフローに以下のように
permissionsを明記する必要があります:permissions:
contents: read
packages: write
など。 Stack Overflow+1
-
組織(Org)で運用する場合、Org設定で “Package” 管理のポリシー(誰がパッケージを公開できるか、アクセスできるか)を確認する必要があります。いくつか Reddit の投稿では「Org 管理者がスイッチを切り替えなければアクセスできない」旨記されています
GHCR 登録およびアクセス手順(参加者向け)
目的
本講習では、講師/運営側が用意したコンテナイメージを GHCR 上に配置しております。参加者の皆さまにはこのイメージを プル(=ダウンロード)して実行できる状態に事前準備をしていただきます。
以下の手順に沿って環境を整えてください。
前提条件
-
Docker Desktop が PC にインストール・起動できること。
-
ご自身の Git/VS Code 等、ワーク用ソフトのインストールが完了していること。
-
講習用リポジトリ(GitHub)の共有リンクを受け取っており、アクセスできること。
-
本手順では “プルのみ” が前提です。プッシュ・削除などは想定外となります。
登録およびアクセス手順
① GitHub アカウント確認
-
GitHub にログインしてください: https://github.com
-
アカウントをお持ちでない場合は作成してください(【ユーザー名・メールアドレス・パスワード】の登録)
-
講習用リポジトリ/パッケージ提供先(運営側)からアクセス権設定・招待が行われている場合、招待メール等が届いている場合がありますので、通知をご確認ください。
② Personal Access Token (PAT) の発行
※ プライベートなイメージをプルする環境がある場合に必要です。公開イメージの場合は不要なケースもあります。
-
GitHub の右上 → Settings(設定) → Developer settings → Personal access tokens → Tokens (classic) を選択。
-
「Generate new token(classic)」をクリック。
-
トークン名(例:講習用GHCRアクセス)を入力。
-
有効期限を設定(例:30日/講習終了まで)
-
Scopes(スコープ):
-
read:packagesにチェック。これは “パッケージ(イメージ)を読み込む” 権限を意味します。 Stack Overflow+1 -
他は原則不要(プルのみ想定)
-
-
「Generate token」をクリックし、表示されたトークンを 安全に保存してください(この画面以降は表示されません)。
③ Docker で GHCR にログイン
-
ターミナル(または PowerShell/bash 等)を開いてください。
-
以下コマンドを入力(USERNAME をご自身の GitHub ユーザー名、PAT を上記で取得したトークンに置き換え):
echo YOUR_PAT_TOKEN | docker login ghcr.io -u YOUR_GITHUB_USERNAME --password-stdin
→ “Login Succeeded” と表示されれば成功です。 Gist+1
-
ログインが成功したら、次のステップへ。
④ イメージのプル(ダウンロード)
-
講習で指定されたイメージ名・タグを確認してください(例:
ghcr.io/ORG_NAME/IMAGE_NAME:TAG) -
ターミナルで以下コマンドを実行:
docker pull ghcr.io/ORG_NAME/IMAGE_NAME:TAG
-
正常にダウンロードできたことを確認してください(例:
docker imagesで一覧に IMAGE_NAME が出る)。
⑤ 実行確認・動作チェック
-
イメージを使ってコンテナを起動し、動作を確認します。例:
docker run --rm -it ghcr.io/ORG_NAME/IMAGE_NAME:TAG
-
講習で指定された動作(例:ツール起動/サンプル実行)を確認してください。
-
エラーが出た場合は、準備資料に記載の「トラブルシュートチェックリスト」を参照し、講師/運営にご連絡ください。
よくあるトラブルと対策
| 問題 | 対策 |
|---|---|
unauthorized/pull access denied と出る |
PATのスコープが read:packages になっているか/イメージがプライベートでアクセス権が付与されているか確認。 Stack Overflow+1 |
docker login ghcr.io が失敗する |
ユーザー名・トークンが正しいか/Docker が動作可能な環境か(仮想化・WSL2等)を再確認。 |
| ネットワークが遅/タイムアウトする | ネットワーク環境(VPN/プロキシ/企業ファイアウォール)を確認。必要時は講師に相談。 |
| イメージサイズが大きくダウンロードに時間がかかる | 事前にダウンロードを試す/講習開始前に余裕をもって準備することを推奨。 |
補足事項/注意点
-
本イメージは 講習会専用の設計環境として提供されるものです。受講後の商用利用・再配布等は別途契約・ライセンス条件をご確認ください。
-
トークンは第三者に共有しないでください。漏洩するとアクセス権限の乱用リスクがあります。
-
講習終了後、不要となったイメージ・トークン/不要なコンテナは削除することを推奨します(
docker image rm,docker logout ghcr.io等)。 -
当日開始前までに上記手順すべてが完了しているか、各自チェックをお願いします。開始時点で環境未整備の場合、演習時間に影響が出る可能性があります。
サポート窓口
何か不明点・トラブルが発生した場合は、以下にご連絡ください。
-
講習運営担当: [担当者/連絡先]
-
電話/チャットサポート: [時間帯・連絡方法]
-
当日現地サポート: …(設定開始前30分~)
ご協力よろしくお願いいたします。
以上、よろしくお願いいたします。
講習当日のスムーズな環境整備にご協力ください。