Skip to main content

Working with the Container registry

You can store and manage Docker and OCI images in the コンテナレジストリ, which uses the package namespace

GitHub Packages is available with GitHub Free, GitHub Pro, GitHub Free for organizations, GitHub Team, GitHub Enterprise Cloud, GitHub Enterprise Server 3.0 or higher, and GitHub AE.

GitHub Packagesは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 Also, accounts using legacy per-repository plans cannot access the コンテナレジストリ since these accounts are billed by repository. 詳しい情報については「[GitHubの製品](/get-started/learning-about-github/githubs-products)」を参照してください。

About コンテナレジストリ support

The コンテナレジストリ currently supports the following container image formats:

When installing or publishing a Docker image, the コンテナレジストリ supports foreign layers, such as Windows images.

Authenticating to the コンテナレジストリ

To authenticate to the コンテナレジストリ within a GitHub Actions workflow, use the GITHUB_TOKEN for the best security and experience. If your workflow is using a personal access token (PAT) to authenticate to, then we highly recommend you update your workflow to use the GITHUB_TOKEN.

For guidance on updating your workflows that authenticate to with a personal access token, see "Upgrading a workflow that accesses"

For more information about the GITHUB_TOKEN, see "Authentication in a workflow."

If you're using the コンテナレジストリ in actions, follow our security best practices at "Security hardening for GitHub Actions."

  1. 実行したいタスクに対して適切なスコープを持つ新しい個人アクセストークン(PAT)を作成してください。 OrganizationがSSOを必須としている場合は、新しいトークンでSSOを有効化しなければなりません。

    ノート: デフォルトでは、ユーザインターフェース内で個人アクセストークン(PAT)に対してwrite:packagesスコープを選択すると、repoスコープも選択されます。 repoは不要に広いアクセス権を提供するので、特にGitHub Actionsのワークフローでの利用は避けることをおすすめします。 詳しい情報については「GitHub Actionsのためのセキュリティ強化」を参照してください。 As a workaround, you can select just the write:packages scope for your PAT in the user interface with this url:

    • コンテナイメージをダウンロードし、そのメタデータを読むためにはread:packagesスコープを選択してください。
    • コンテナイメージのダウンロードとアップロード、及びそのメタデータの読み書きのためには、write:packagesスコープを選択してください。
    • コンテナイメージを削除するにはdelete:packagesスコープを選択してください。


  2. PATを保存してください。 PATは環境変数として保存することをおすすめします。

    $ export CR_PAT=YOUR_TOKEN
  3. コンテナタイプにあったCLIを利用して、 コンテナレジストリ service at

    $ echo $CR_PAT | docker login -u USERNAME --password-stdin
      > Login Succeeded

Pushing container images

This example pushes the latest version of IMAGE-NAME.

$ docker push

This example pushes the 2.5 version of the image.

$ docker push

When you first publish a package, the default visibility is private. To change the visibility or set access permissions, see "Configuring a package's access control and visibility."

Pulling container images

Pull by digest

To ensure you're always using the same image, you can specify the exact container image version you want to pull by the digest SHA value.

  1. To find the digest SHA value, use docker inspect or docker pull and copy the SHA value after Digest:

    $ docker inspect
  2. Remove image locally as needed.

    $ docker rmi
  3. Pull the container image with @YOUR_SHA_VALUE after the image name.

    $ docker pull

Pull by name

$ docker pull

Pull by name and version

Docker CLI example showing an image pulled by its name and the 1.14.1 version tag:

$ docker pull
  > 5e35bd43cf78: Pull complete
  > 0c48c2209aab: Pull complete
  > fd45dd1aad5a: Pull complete
  > db6eb50c2d36: Pull complete
  > Digest: sha256:ae3b135f133155b3824d8b1f62959ff8a72e9cf9e884d88db7895d8544010d8e
  > Status: Downloaded newer image for

Pull by name and latest version

$ docker pull
  > latest: Pulling from user/image-name
  > Digest: sha256:b3d3e366b55f9a54599220198b3db5da8f53592acbbb7dc7e4e9878762fc5344
  > Status: Downloaded newer image for

Building container images

This example builds the hello_docker image:

$ docker build -t hello_docker .

Tagging container images

  1. Find the ID for the Docker image you want to tag.

    $ docker images
    > REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
    >         latest              38f737a91f39        47 hours ago        91.7MB
    >    latest              38f737a91f39        47 hours ago        91.7MB
    > hello-world                                           latest              fce289e99eb9        16 months ago       1.84kB
  2. Tag your Docker image using the image ID and your desired image name and hosting destination.

    $ docker tag 38f737a91f39