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

GitHub Packagesで利用するために Docker を設定する

Docker クライアントが、GitHub Packages を利用して Docker イメージを公開および取得できるよう設定できます。

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はパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、GitHubはOWNER/testというリポジトリ内のcom.example:testという名前のパッケージを公開します。

GitHub Packages への認証を行う

ノート:GitHub Packages Dockerレジストリは、改善されたコンテナサポートを提供しています。 詳しい情報については「GitHub Container Registryについて」を参照してください。 既存のDockerイメージと、それらを使うワークフローの移行方法を学ぶには、「DockerイメージのためのGitHub Container Registryへの移行」及び「GitHub Packagesのためのコンテナガイド」を参照してください。

docker loginコマンドを使い、DockerでGitHub Packagesの認証を受けることができます。

GitHub Packages への認証を行う

GitHub Packagesでパッケージを公開、インストール、削除するにはアクセストークンが必要です。 GitHub Packagesに直接、あるいはGitHub APIでユーザ名で認証を受けるのに、個人のアクセストークンが利用できます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。

認証を GitHub Actionsのワークフローで行うには:

  • パッケージレジストリの場合(PACKAGE-REGISTRY.pkg.github.com)は、GITHUB_TOKENを利用できます。
  • コンテナレジストリ(ghcr.io/OWNER/IMAGE-NAME)の場合は、GITHUB_TOKENもしくは個人アクセストークンを利用できます。 GITHUB_TOKENを利用し、リポジトリに不要なアクセスをしないようにすることを強くおすすめします。

GitHub Actionsワークフローで使われるGITHUB_TOKENに関する情報については、「暗号化されたシークレット」及び「ワークフロー内での認証」を参照してください。

個人アクセストークンでの認証

GitHub Packages内でパッケージを公開及びインストールするためには、適切なスコープで個人アクセストークンを使わなければなりません。 詳しい情報については「GitHub Packagesについて」を参照してください。

docker loginコマンドを使い、DockerでGitHub Packagesの認証を受けることができます。

クレデンシャルをセキュアに保つ貯めに、個人アクセストークンは自分のコンピュータのローカルファイルに保存し、ローカルファイルからトークンを読み取るDockerの--password-stdinフラグを使うことをおすすめします。

$ cat ~/TOKEN.txt | docker login https://docker.pkg.github.com -u USERNAME --password-stdin

この例の login コマンドを使うには、USERNAME を GitHub ユーザ名に、~/TOKEN.txt GitHub の個人アクセストークンへのファイルパスに置き換えてください。

詳しい情報については「Docker login」を参照してください。

GITHUB_TOKENでの認証

GitHub Actionsワークフローを使っているなら、GITHUB_TOKENを使い、個人アクセストークンを保存したり管理したりする必要なくGitHub Packages内のパッケージの公開や利用ができます。 詳しい情報については「GITHUB_TOKENでの認証」を参照してください。

イメージを公開する

ノート:GitHub Packages Dockerレジストリは、改善されたコンテナサポートを提供しています。 詳しい情報については「GitHub Container Registryについて」を参照してください。 既存のDockerイメージと、それらを使うワークフローの移行方法を学ぶには、「DockerイメージのためのGitHub Container Registryへの移行」及び「GitHub Packagesのためのコンテナガイド」を参照してください。

注釈: イメージ名には小文字のみを使用する必要があります。

GitHub Packages は、リポジトリごとに複数の最上位 Docker イメージをサポートしています。 リポジトリは任意の数のイメージタグを持つことができます。 10GB以上のDockerイメージの公開やインストールの際には、サービスのパフォーマンスが低下するかもしれず、各レイヤーは5GBが上限です。 詳しい情報については、Dockerのドキュメンテーションの「Docker tag」を参照してください。

パッケージを公開した後は、GitHub上でそのパッケージを見ることができます。 詳しい情報については「パッケージの表示」を参照してください。

  1. docker imagesを使って、Dockerイメージのイメージ名とIDを確認してください。

    $ docker images
    > < >
    > REPOSITORY        TAG        IMAGE ID       CREATED      SIZE
    > IMAGE_NAME        VERSION    IMAGE_ID       4 weeks ago  1.11MB
  2. 新しいDockerイメージを初めて公開し、monalisaという名前にできます。 VERSION をビルド時のパッケージバージョンに置き換えます。

    $ docker tag IMAGE_ID docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION
  3. パッケージ用のDockerイメージをまだ構築していないなら、イメージを構築してください。 OWNERをリポジトリを所有しているユーザあるいはOrganizationのアカウント名で、REPOSITORYをプロジェクトを含むリポジトリ名で、IMAGE_NAMEをパッケージもしくはイメージの名前で、VERSIONをビルド時点のパッケージバージョンで置き換え、イメージが現在のワーキングディレクトリにないならPATHをイメージへのパスで置き換えてください。 イメージが現在のワーキングディレクトリにない場合は PATH をイメージのパスに置き換えます。

    $ docker build -t docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH
  4. イメージを GitHub Packages.

    $ docker push docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION

    ノート: イメージのプッシュはIMAGE_NAME:SHAを使うのではなく、IMAGE_NAME:VERSIONを使って行ってください。

Dockerイメージのプッシュの例

monalisaイメージのバージョン1.0を、イメージIDを使ってoctocat/octo-appに公開できます。

$ docker images

> REPOSITORY           TAG      IMAGE ID      CREATED      SIZE
> monalisa             1.0      c75bebcdd211  4 weeks ago  1.11MB

# OWNER/REPO/IMAGE_NAMEでイメージにタグ付けする
$ docker tag c75bebcdd211 docker.pkg.github.com/octocat/octo-app/monalisa:1.0

# GitHub Packagesにイメージをプッシュ
$ docker push docker.pkg.github.com/octocat/octo-app/monalisa:1.0

新しいDockerイメージを初めて公開し、monalisaという名前にできます。

# docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION でイメージを構築
# Dockerfileはカレントワーキングディレクトリ (.)にあるものとする
$ docker build -t docker.pkg.github.com/octocat/octo-app/monalisa:1.0 .
$ docker build -t docker.pkg.github.com/octocat/octo-app/monalisa:1.0 .

# Push the image to GitHub Packages
$ docker push docker.pkg.github.com/octocat/octo-app/monalisa:1.0

イメージをダウンロードする

ノート:GitHub Packages Dockerレジストリは、改善されたコンテナサポートを提供しています。 詳しい情報については「GitHub Container Registryについて」を参照してください。 既存のDockerイメージと、それらを使うワークフローの移行方法を学ぶには、「DockerイメージのためのGitHub Container Registryへの移行」及び「GitHub Packagesのためのコンテナガイド」を参照してください。

docker pullコマンドを使って、DockerイメージをGitHub Packagesからインストールできます。OWNERをリポジトリを所有しているユーザあるいはOrganizationのアカウント名で、REPOSITORYをプロジェクトを含むリポジトリ名で、IMAGE_NAMEをパッケージもしくはイメージの名前で、TAG_NAMEをインストールするイメージのタグで置き換えます。

$ docker pull docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:TAG_NAME

ノート: イメージのプルはIMAGE_NAME:SHAを使うのではなく、IMAGE_NAME:VERSIONを使って行ってください。

参考リンク

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.