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

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

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

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

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

ノート: dockerイメージをインストールしたり公開したりする際に、現時点でGitHub PackagesはWindowsイメージのような外部レイヤーはサポートしていません。

GitHub Packages への認証を行う

GitHub Packagesでパッケージを公開、インストール、削除するにはアクセストークンが必要です。 GitHub Packagesに直接、あるいはGitHub APIでユーザ名で認証を受けるのに、個人のアクセストークンが利用できます。 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 イメージをサポートしています。 リポジトリは任意の数のイメージタグを持つことができます。 10GB以上のDockerイメージの公開やインストールの際には、サービスのパフォーマンスが低下するかもしれず、各レイヤーは5GBが上限です。 詳しい情報については、Dockerのドキュメンテーションの「Docker tag」を参照してください。

大文字はサポートされていないため、仮にGitHubのユーザあるいはOrganization名が大文字を含んでいても、リポジトリオーナーには小文字を使わなければなりません。

パッケージを公開した後は、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 .

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

パッケージをインストールする

docker pullコマンドを使って、DockerイメージをGitHub Packagesからインストールでき明日。OWNERをリポジトリを所有しているユーザあるいはOrganizationのアカウント名で、REPOSITORYをプロジェクトを含むリポジトリ名で、IMAGE_NAMEをパッケージもしくはイメージの名前で、TAG_NAMEをインストールしたいイメージのタグで置き換えてください。 大文字はサポートされていないため、仮にGitHubのユーザあるいはOrganization名が大文字を含んでいても、リポジトリオーナーには小文字を使わなければなりません。

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

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

参考リンク

担当者にお尋ねください

探しているものが見つからなかったでしょうか?

弊社にお問い合わせください