Container registry について
Container registry は、Organization または個人アカウント内にコンテナー イメージを格納し、イメージをリポジトリに関連付けることができます。 権限をリポジトリから継承するか、リポジトリとは別に細かい権限を設定するかを選ぶことができます。 パブリック コンテナー イメージに匿名でアクセスすることもできます。
Container registryサポートについて
現在のところ、Container registry では以下のコンテナフォーマットをサポートしています。
Dockerイメージをインストールあるいは公開する際には、Container registryはWindowsイメージのような外部レイヤーもサポートします。
Container registryでの認証
GitHub Actions ワークフロー内で Container registry (ghcr.io) の認証を受けるには、最高のセキュリティとエクスペリエンスのために GITHUB_TOKEN を使用します。 お使いのワークフローで個人アクセス トークン (PAT) を使用してレジストリの認証を受ける場合、GITHUB_TOKEN を使用するようにワークフローを更新することを強くお勧めします。
個人用アクセス トークンでレジストリの認証を行うワークフローの更新についてのガイダンスは、「PAT を使ってレジストリにアクセスするワークフローをアップグレードする」をご覧ください。
GITHUB_TOKEN の詳細については「ワークフローで認証する」を参照してください。
アクションでレジストリを使用するときのベスト プラクティスについて詳しくは「GitHub Actions のセキュリティ強化」をご覧ください。
-
実行したいタスクに対して適切なスコープを持つ新しい個人アクセストークン(PAT)を作成してください。 OrganizationがSSOを必須としている場合は、新しいトークンでSSOを有効化しなければなりません。
注: 既定では、ユーザー インターフェイスで個人用アクセス トークン (PAT) の
write:packagesスコープを選択すると、repoスコープも選択されます。repoスコープは不要に広いアクセス権を提供するので、特に GitHub Actions のワークフローでの利用は避けることをお勧めします。 詳細については、「GitHub Actions のセキュリティ強化」を参照してください。 回避策として、URLhttps://github.com/settings/tokens/new?scopes=write:packagesのユーザー インターフェイスで自分の PAT だけのwrite:packagesスコープを選択できます。read:packagesスコープを選択すると、コンテナー イメージがダウンロードされ、そのメタデータが読み取られます。write:packagesスコープを選択すると、コンテナー イメージがダウンロードされ、アップロードされ、そのメタデータが読み書きされます。delete:packagesスコープを選択すると、コンテナー イメージが削除されます。
詳細については、コマンド ライン用の個人アクセス トークンの使用に関するページを参照してください。
-
PATを保存してください。 PATは環境変数として保存することをおすすめします。
$ export CR_PAT=YOUR_TOKEN -
コンテナーの種類に CLI を使用し、
ghcr.ioで Container registry サービスにサインインします。$ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin > Login Succeeded
コンテナイメージをプッシュする
この例では、最新バージョンの IMAGE_NAME をプッシュします。
$ docker push ghcr.io/OWNER/IMAGE_NAME:latest
以下の例では、イメージのバージョン 2.5 をプッシュします。
$ docker push ghcr.io/OWNER/IMAGE_NAME:2.5
パッケージを最初に公開する際のデフォルトの可視性はプライベートです。 可視性を変更したりアクセス権限を設定するには、「パッケージのアクセス制御と可視性の設定」を参照してください。
コンテナイメージをプルする
ダイジェストによるプル
常に同一のイメージを使用するため、digest SHA 値でプルするコンテナー イメージのバージョンを指定できます。
-
docker inspectまたはdocker pullを使用してダイジェスト SHA 値を調べ、その SHA 値をDigest:の後にコピーします$ docker inspect ghcr.io/OWNER/IMAGE_NAME -
必要に応じてローカルでイメージを削除します。
$ docker rmi ghcr.io/OWNER/IMAGE_NAME:latest -
イメージ名の後に
@YOUR_SHA_VALUEを付けてコンテナー イメージをプルします。$ docker pull ghcr.io/OWNER/IMAGE_NAME@sha256:82jf9a84u29hiasldj289498uhois8498hjs29hkuhs
名前によるプル
$ docker pull ghcr.io/OWNER/IMAGE_NAME
名前とバージョンによるプル
名前と 1.14.1 バージョン タグにより Docker CLI でイメージをプルする例を以下に示します。
$ docker pull ghcr.io/OWNER/IMAGE_NAME:1.14.1
> 5e35bd43cf78: Pull complete
> 0c48c2209aab: Pull complete
> fd45dd1aad5a: Pull complete
> db6eb50c2d36: Pull complete
> Digest: sha256:ae3b135f133155b3824d8b1f62959ff8a72e9cf9e884d88db7895d8544010d8e
> Status: Downloaded newer image for ghcr.io/orgname/image-name/release:1.14.1
> ghcr.io/orgname/image-name/release:1.14.1
名前と最新バージョンによるプル
$ docker pull ghcr.io/OWNER/IMAGE_NAME:latest
> latest: Pulling from user/image-name
> Digest: sha256:b3d3e366b55f9a54599220198b3db5da8f53592acbbb7dc7e4e9878762fc5344
> Status: Downloaded newer image for ghcr.io/user/image-name:latest
> ghcr.io/user/image-name:latest
コンテナイメージを構築する
以下の例では hello_docker イメージを構築します。
$ docker build -t hello_docker .
コンテナイメージにタグ付けする
-
タグ付けする Docker イメージの ID を調べます。
$ docker images > REPOSITORY TAG IMAGE ID CREATED SIZE > ghcr.io/my-org/hello_docker latest 38f737a91f39 47 hours ago 91.7MB > ghcr.io/my-username/hello_docker latest 38f737a91f39 47 hours ago 91.7MB > hello-world latest fce289e99eb9 16 months ago 1.84kB -
イメージ ID を使用して、Docker イメージを任意のイメージ名とホスティング先でタグ付けします。
$ docker tag 38f737a91f39 ghcr.io/OWNER/NEW_IMAGE_NAME:latest