概要
GitHubのコンテナレジストリ(ghcr.io)にイメージをプッシュしたりプルしたりする手順です。
プッシュする手順
プッシュしたいイメージのタグ付け
とりあえず今回はビルドからやってしまいます。 以下のようなDockerfileをつかってみます。
FROM alpine:latest RUN echo 'test dayo' # LABEL org.opencontainers.image.source=https://github.com/ユーザ名/リポジトリ名 LABEL org.opencontainers.image.source=https://github.com/takakabe/blog_RaspberryPi
以下コマンドを実行してビルドします。
ビルド済みイメージをプッシュしたい場合はタグだけつけます。
ghcr.io/ユーザ名(組織名)/イメージ名:タグ名
とする必要があります。
docker build -t ghcr.io/ユーザ名(組織名)/イメージ名:タグ名 .
備考
ちなみに以下のようにすることで とすることでリポジトリとイメージを紐づけることができます。
LABEL org.opencontainers.image.source=https://github.com/ユーザ名/リポジトリ名
docker login する
PATを作成する
以下からGitHubのPersonal Access Tokenを生成します。
イメージをPush,Pullするためにはwrite:packages
を有効にしてあげる必要があります。write:package
を有効にするとrepo
もいっしょに有効化されます。
https://github.com/settings/tokens/new
作成したPATはコピーしておきます。
docker login
以下コマンドを実行してdocker loginします。
export CR_PAT=さっきコピーしたトークン echo ${CR_PAT} | docker login ghcr.io -u GitHubのユーザ名 --password-stdin
イメージをプッシュする
プッシュします。
docker push ghcr.io/ユーザ名(組織名)/イメージ名:タグ名
されました。
プルする手順
docker login する
PATを作成する
以下からGitHubのPersonal Access Tokenを生成します。
イメージをPush,Pullするためにはwrite:packages
を有効にしてあげる必要があります。write:package
を有効にするとrepo
もいっしょに有効化されます。
https://github.com/settings/tokens/new
作成したPATはコピーしておきます。
docker login
以下コマンドを実行してdocker loginします。
export CR_PAT=さっきコピーしたトークン echo ${CR_PAT} | docker login ghcr.io -u GitHubのユーザ名 --password-stdin
docker pull する
docker pull ghcr.io/ユーザ名(組織名)/イメージ名:タグ名
プルされました。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ghcr.io/takakabe/test-image latest 40b5edb89999 13 minutes ago 5.53MB
追補
プッシュしたイメージの権限、以下のチェックをつけてリポジトリの権限を引き継ぐように設定したほうが良い。 チームでつかうときにプッシュした人以外見れなかったりしたりしなかったりなってしまいます。