注釈: GitHub Container Registry は現在パブリックベータであり、変更されることがあります。 ベータ期間中は、ストレージおよび帯域幅の制限はありません。 GitHub Container Registryを使用するには、機能プレビューを有効化しなければなりません。 詳しい情報については「GitHub Container Registryについて」及び「改善されたコンテナサポートの有効化」を参照してください。
Organization が所有するコンテナイメージをプッシュまたはプルするには、GitHub Container Registry を Organization に対して有効化する必要があります。 詳しい情報については、「改善されたコンテナサポートを有効化する」を参照してください。
GitHub Container Registry への認証を行う
PATはアカウントに対する広汎なアクセスを許可できます。 container registryでの認証のためのPATを作成する際には、必要なread:packages
、write:packages
、delete:packages
スコープだけを選択すべきです。
GitHub Actionsワークフロー内でGitHub Container Registryの認証を受けるには、最善のセキュリティと体験のためにGITHUB_TOKEN
を使ってください。
個人アクセストークンでghcr.io
の認証を受けるワークフローの更新に関するガイダンスとしては、「ghcr.io
にアクセスするワークフローのアップグレード」を参照してください。
GitHub Container Registryは、ワークフロー内での容易でセキュアな認証のためにGITHUB_TOKEN
をサポートするようになりました。 ワークフローがghcr.io
での認証のために個人アクセストークン(PAT)を使っているなら、GITHUB_TOKEN
を使うようにワークフローを更新することを強くおすすめします。
GITHUB_TOKEN
に関する詳しい情報については「暗号化されたシークレット」及び「ワークフロー内での認証」を参照してください。
ベータの期間にアクションでcontainer registryを使いたい場合は、「GitHub Actionsのセキュリティ強化」にあるPATのセキュリティベストプラクティスに従ってください。
-
実行したいタスクに対して適切なスコープを持つ新しい個人アクセストークン(PAT)を作成してください。 OrganizationがSSOを必須としている場合は、新しいトークンでSSOを有効化しなければなりません。
ノート: デフォルトでは、ユーザインターフェース内で個人アクセストークン(PAT)に対して
write:packages
スコープを選択すると、repo
スコープも選択されます。repo
は不要に広いアクセス権を提供するので、特にGitHub Actionsのワークフローでの利用は避けることをおすすめします。 詳しい情報については「GitHub Actionsのためのセキュリティ強化」を参照してください。 回避策として、以下のURLでユーザインターフェース内でPATにwrite:packages
スコープだけを選択することができます。https://github.com/settings/tokens/new?scopes=write:packages
- コンテナイメージをダウンロードし、そのメタデータを読むためには
read:packages
スコープを選択してください。 - コンテナイメージのダウンロードとアップロード、及びそのメタデータの読み書きのためには、
write:packages
スコープを選択してください。 - コンテナイメージを削除するには
delete:packages
スコープを選択してください。
詳しい情報についてはコマンドラインのための個人のアクセストークンの作成を参照してください。
- コンテナイメージをダウンロードし、そのメタデータを読むためには
-
PATを保存してください。 PATは環境変数として保存することをおすすめします。
$ export CR_PAT=YOUR_TOKEN
-
コンテナタイプにあったCLIを利用して、
ghcr.io
にあるGitHub 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