ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

Docker イメージをプッシュ、プルする

Docker イメージは GitHub Container Registry で保存して管理できます。

GitHub PackagesはGitHub Free、GitHub Pro、GitHub FreeのOrganization、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 2.22、GitHub One、GitHub AEで利用できます。


GitHub Packagesは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 GitHub PackagesはGitHub Free、GitHub Pro、GitHub FreeのOrganization、GitHub Team、GitHub Enterprise Cloud、GitHub Oneで利用できます。 詳しい情報については「[GitHubの製品](/articles/github-s-products)」を参照してください。

ここには以下の内容があります:

注釈: GitHub Container Registry は現在パブリックベータであり、変更されることがあります。 ベータ期間中は、ストレージおよび帯域幅の制限はありません。 GitHub Container Registryを使用するには、機能プレビューを有効化しなければなりません。 詳しい情報については「GitHub Container Registryについて」及び「改善されたコンテナサポートの有効化」を参照してください。

Organization が所有するコンテナイメージをプッシュまたはプルするには、GitHub Container Registry を Organization に対して有効化する必要があります。 詳しい情報については、「改善されたコンテナサポートを有効化する」を参照してください。

GitHub Container Registry への認証を行う

PATはアカウントに対する広汎なアクセスを許可できます。 container registryでの認証のためのPATを作成する際には、必要なread:packageswrite:packagesdelete: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のセキュリティベストプラクティスに従ってください。

  1. 実行したいタスクに対して適切なスコープを持つ新しい個人アクセストークン(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スコープを選択してください。

    詳しい情報についてはコマンドラインのための個人のアクセストークンの作成を参照してください。

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

    $ export CR_PAT=YOUR_TOKEN
  3. コンテナタイプにあった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 値でプルするコンテナイメージのバージョンを指定できます。

  1. docker inspect または docker pull を使用してダイジェスト SHA 値を調べ、その SHA 値を Digest: の後にコピーします。

    $ docker inspect ghcr.io/OWNER/IMAGE_NAME
  2. 必要に応じてローカルでイメージを削除します。

    $ docker rmi  ghcr.io/OWNER/IMAGE_NAME:latest
  3. イメージ名の後に @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 .

コンテナイメージにタグ付けする

  1. タグ付けする 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
  2. イメージ ID を使用して、Docker イメージを任意のイメージ名とホスティング先でタグ付けします。

    $ docker tag 38f737a91f39 ghcr.io/OWNER/NEW_IMAGE_NAME:latest

Did this doc help you?

Privacy policy

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

OR, learn how to contribute.