コンテンツにスキップ

gh cli を使った ghcr の認証

docker loginで ghcr.io にログインする方法として、公式は PAT の利用を紹介している。PAT は管理に手間がかかるため、gh cli を使って認証する方法を探したところ、次の方法で認証できることがわかった。

gh auth refresh --scopes=read:packages,write:packages
gh auth token | docker login ghcr.io --username <YOURUSER> --password-stdin

credential helper は、Docker が外部のプログラムから認証情報を受け取るための仕組みで、docker login以外の選択肢になる。たとえば PATH 上にdocker-credential-ghcrを置いた場合、~/.docker/config.jsonへ次の設定を書けば、ghcr.ioの認証でこのプログラムを使うようになる。

~/.docker/config.json の設定例
1
2
3
4
5
{
  "credHelpers": {
    "ghcr.io": "ghcr"
  }
}

この方式では、helper の実行ファイルも導入する必要がある。上のdocker loginを使うだけなら、この追加設定はいらない。

credHelpersの値ghcrが実行ファイルdocker-credential-ghcrを指す仕組みは、Docker の credential helper の説明に記載されている。GitHub CLI の token を返す helper の実装例は、cli/cli の Issue #5150にある。

参考リンク