1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ghコマンドでGitHub Container RegistryにDockerイメージをプッシュできるようにする

Last updated at Posted at 2024-12-22

3行まとめ

  1. gh auth login -s write:packageswrite:packages スコープ付きでログイン
  2. docker login ghcr.io -u <ユーザー名> -p $(gh auth token) でGHCRにログイン
  3. docker push ghcr.io/<ユーザー名>/<リポジトリ名>:latest でイメージをプッシュ

本稿ではGitHub CLI (ghコマンド)を使って、GitHub Container Registry (GHCR) にDockerイメージをプッシュする際の設定方法をご紹介します。

ghコマンドを使っている人は、もうGitHubのWebページからpersonal access tokenをいちいち取りに行かなくて済むので便利ですよ。

背景

GitHub Packagesの一部であるGitHub Container Registry (GHCR) を使うと、GitHub上でコンテナイメージを簡単にホスト・管理できます。

ただし、Dockerでプッシュする際にはトークンにwrite:packagesスコープが必要です。

GitHub CLI (gh) では、リポジトリ操作だけでなく、発行されるトークンのスコープを柔軟に指定できるため、Dockerイメージのプッシュもスムーズに行えます。

手順

1. すでにログインしている場合はログアウトする

GHCRへのプッシュに必要なトークンスコープを新たに付与したい場合、まず既存の認証状態からログアウトします。

gh auth logout

2. write:packages スコープ付きのトークンを取得する

GitHub CLIを使ってログインします。このとき、-s write:packages のオプションを指定することで、パーソナルアクセストークンにwrite:packagesスコープが追加されます。

gh auth login -s write:packages

ログインが完了すると、gh auth tokenコマンドでトークンを取得できます。

gh auth token

このコマンドで表示されたトークンは、GHCRにログインする際やDockerでプッシュする際に使用します。

ちなみに、このトークンは「OAuth Access Token」です。基本的に有効期限がないものになります。

3. GHCRにログインする

取得したトークンを使ってDockerでGHCRにログインします。
ghcr.io はGitHubのコンテナレジストリのドメインです。

docker login ghcr.io -u <GitHubユーザー名> -p $(gh auth token)

-u にGitHubのユーザー名を指定し、パスワードとして gh auth token の出力を渡します。

4. Dockerイメージをビルドしてプッシュする

ログインが完了したら、あとは通常のDockerプッシュと同じ手順です。
以下のようにイメージをビルドし、GHCRにプッシュしてください。

# イメージをビルド (例: REPO という名前のイメージを作成)
docker build -t ghcr.io/<GitHubユーザー名>/<リポジトリ名>:latest .

# プッシュ
docker push ghcr.io/<GitHubユーザー名>/<リポジトリ名>:latest

<GitHubユーザー名><リポジトリ名> の部分は適宜変更してください。

まとめ

  • gh auth logout で一度ログアウトしたうえで gh auth login -s write:packages する。
  • gh auth token で取得したトークンを使って docker login ghcr.io。
  • あとは通常のDockerイメージのプッシュと同じ手順で docker push ghcr.io/USERNAME/REPO:tag すればOK。

GitHub CLIを活用することで、コマンドラインから一貫してGitHubの各種サービスにアクセスできるのが便利ですね。

これで、GitHub CLIでwrite:packagesスコープを取得し、GHCRにDockerイメージをプッシュする方法の説明は以上です。ご参考になれば幸いです😌

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?