ノート: GitHub Packagesは現在GitHub Enterprise Server 2.22でベータです。 GitHub Enterprise Serverのインスタンスのベータに参加するには、サインアップフォームを使ってください。
デフォルトでは、GitHubはパッケージはそのままの名前で既存のリポジトリに公開されます。 たとえば、GitHubはOWNER/test
というリポジトリ内のcom.example:test
という名前のパッケージを公開します。
Dockerサポートについて
Dockerイメージをインストールあるいは公開する際に、Dockerレジストリは現在Windowsイメージのような外部レイヤーをサポートしません。
Docker レジストリを GitHub Packages で使用する前に、GitHub Enterprise Serverのインスタンス のサイト管理者がインスタンスに対し Docker のサポートとand Subdomain Isolation を有効化する必要があります。 詳しい情報については、「Enterprise 向けの GitHub Packages を管理する」を参照してください。
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
フラグを使うことをおすすめします。
$ 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
# {{ site.data.variables.product.prodname_registry }}にイメージをプッシュ
$ docker push docker.pkg.github.com/octocat/octo-app/monalisa:1.0
この例の login コマンドを使うには、USERNAME
を GitHub Enterprise Server ユーザ名に、HOSTNAME
を GitHub Enterprise Serverのインスタンス の URL に、~/TOKEN.txt
GitHub Enterprise Server の個人アクセストークンへのファイルパスに置き換えてください。
詳しい情報については「Docker login」を参照してください。
イメージを公開する
ノート: GitHub Packages Dockerレジストリは将来のGitHub Enterprise Serverリリースでコンテナレジストリとともに置き換えられます。これは改善されたコンテナサポートを提供します。
注釈: イメージ名には小文字のみを使用する必要があります。
GitHub Packages は、リポジトリごとに複数の最上位 Docker イメージをサポートしています。 リポジトリは任意の数のイメージタグを持つことができます。 10GB以上のDockerイメージの公開やインストールの際には、サービスのパフォーマンスが低下するかもしれず、各レイヤーは5GBが上限です。 詳しい情報については、Dockerのドキュメンテーションの「Docker tag」を参照してください。
パッケージを公開した後は、GitHub上でそのパッケージを見ることができます。 詳しい情報については「パッケージの表示」を参照してください。
-
docker images
を使って、Dockerイメージのイメージ名とIDを確認してください。$ docker images > < > > REPOSITORY TAG IMAGE ID CREATED SIZE > IMAGE_NAME VERSION IMAGE_ID 4 weeks ago 1.11MB
-
DockerイメージIDを使い、Dockerイメージにタグ付けしてください。OWNERをリポジトリを所有するユーザもしくはOrganizationアカウントの名前で、REPOSITORYをプロジェクトを含むリポジトリの名前で、IMAGE_NAMEをパッケージもしくはイメージの名前で、HOSTNAMEをGitHub Enterprise Serverのインスタンスのホスト名で、VERSIONをビルドの時点のパッケージバージョンで置き換えてください。
$ docker tag IMAGE_ID docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
-
まだパッケージのDockerイメージをビルドしていないならビルドしてください。OWNERをリポジトリを所有するユーザもしくはOrganizationアカウントの名前で、REPOSITORYをプロジェクトを含むリポジトリの名前で、IMAGE_NAMEをパッケージもしくはイメージの名前で、VERSIONをビルド時点のパッケージバージョンで、HOSTNAMEをGitHub Enterprise Serverのインスタンスのホスト名で、もしもイメージが現在の作業ディレクトリ中になければPATHをイメージへのパスで置き換えてください。
$ docker build -t docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH
-
GitHub Packagesにイメージを公開してください。
$ docker push docker.HOSTNAME/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
# Tag the image with OWNER/REPO/IMAGE_NAME
$ docker tag c75bebcdd211 docker.HOSTNAME/octocat/octo-app/monalisa:1.0
# Push the image to GitHub Packages
$ docker push docker.HOSTNAME/octocat/octo-app/monalisa:1.0
新しいDockerイメージを初めて公開し、monalisa
という名前にできます。
# Build the image with docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:VERSION
# Assumes Dockerfile resides in the current working directory (.)
$ docker build -t docker.HOSTNAME/octocat/octo-app/monalisa:1.0 .
# Push the image to GitHub Packages
$ docker push docker.HOSTNAME/octocat/octo-app/monalisa:1.0
イメージをダウンロードする
ノート: GitHub Packages Dockerレジストリは将来のGitHub Enterprise Serverリリースでコンテナレジストリとともに置き換えられます。これは改善されたコンテナサポートを提供します。
docker pull
コマンドを使って、DockerイメージをGitHub Packagesからインストールできます。OWNERをリポジトリを所有しているユーザあるいはOrganizationのアカウント名で、REPOSITORYをプロジェクトを含むリポジトリ名で、IMAGE_NAMEをパッケージもしくはイメージの名前で、 HOSTNAMEをGitHub Enterprise Serverのインスタンスのホスト名で、<1>TAG_NAME*をインストールするイメージのタグで置き換えます。
$ docker pull docker.HOSTNAME/OWNER/REPOSITORY/IMAGE_NAME:TAG_NAME
ノート: イメージのプルはIMAGE_NAME:SHA
を使うのではなく、IMAGE_NAME:VERSION
を使って行ってください。
参考リンク
- 「パッケージの削除」