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

Dockerレジストリの利用

パッケージの名前空間としてhttps://docker.pkg.github.comを使うGitHub Packages Dockerレジストリを利用して、Dockerイメージをプッシュ及びプルできます。

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


GitHub Packagesは、レガシーのリポジトリごとのプランを使っているアカウントが所有しているプライベートリポジトリでは利用できません。 また、レガシーのリポジトリごとのプランを使っているアカウントは、リポジトリごとに課金されるため、コンテナレジストリにはアクセスできません。 詳しい情報については「[GitHubの製品](/articles/github-s-products)」を参照してください。

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

デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、GitHubはOWNER/testというリポジトリ内のcom.example:testという名前のパッケージを公開します。

Dockerレジストリとコンテナレジストリとの比較:

  • コンテナレジストリ(https://ghcr.io)は、コンテナに対して改善されたパフォーマンスを提供し、将来的にはDockerレジストリを置き換えます。
  • Dockerイメージとワークフローは、Dockerレジストリ(docker.pkg.github.com)からコンテナレジストリ(https://ghcr.io)へ、詳細な権限、コンテナストレージの最適化などのために移行できます。 詳しい情報については「Dockerレジストリからコンテナレジストリへの移行」を参照してください。

Dockerサポートについて

Dockerイメージをインストールあるいは公開する際に、Dockerレジストリは現在Windowsイメージのような外部レイヤーをサポートしません。

GitHub Packages への認証を行う

GitHub Packagesでパッケージを公開、インストール、削除するにはアクセストークンが必要です。

GitHub Packages、あるいはGitHub APIで認証を受けるのに、個人のアクセストークン(PAT)が利用できます。 個人トークンを作成する際には、必要に応じて様々なスコープをトークンに割り当てできます。 PATに関するパッケージ関連のスコープについての詳しい情報は、「GitHub Packagesの権限について」を参照してください。

GitHub Actionsワークフロー内でGitHub Packagesレジストリに認証を受けるには、以下の方法が使えます。

  • GITHUB_TOKENを使って、ワークフローリポジトリに関連づけられたパッケージを公開。
  • PATで他のプライベートリポジトリ(これには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 Packages Dockerレジストリは、改善されたコンテナサポートを提供するコンテナレジストリによって置き換えられます。 既存のDockerイメージと、それらを使うワークフローの移行方法を学ぶには、「Dockerレジストリからコンテナレジストリへの移行」を参照してください。

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

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イメージIDを使い、Dockerイメージにタグ付けしてください。OWNERをリポジトリを所有するユーザもしくはOrganizationアカウントの名前で、REPOSITORYをプロジェクトを含むリポジトリの名前で、IMAGE_NAMEをパッケージもしくはイメージの名前で、VERSIONをビルドの時点のパッケージバージョンで置き換えてください。

    $ docker tag IMAGE_ID docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION
  3. まだパッケージのDockerイメージをビルドしていないならビルドしてください。OWNERをリポジトリを所有するユーザもしくはOrganizationアカウントの名前で、REPOSITORYをプロジェクトを含むリポジトリの名前で、IMAGE_NAMEをパッケージもしくはイメージの名前で、VERSIONをビルド時点のパッケージバージョンで、もしもイメージが現在の作業ディレクトリ中になければ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レジストリは、改善されたコンテナサポートを提供するコンテナレジストリによって置き換えられます。 既存のDockerイメージと、それらを使うワークフローの移行方法を学ぶには、「Dockerレジストリからコンテナレジストリへの移行」を参照してください。

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を使って行ってください。

参考リンク

このドキュメントは役立ちましたか?

Privacy policy

これらのドキュメントを素晴らしいものにするのを手伝ってください!

GitHubのすべてのドキュメントはオープンソースです。間違っていたり、はっきりしないところがありましたか?Pull Requestをお送りください。

コントリビューションを行う

OR, コントリビューションの方法を学んでください。

問題がまだ解決していませんか?

GitHubコミュニティで質問する サポートへの連絡