目次
背景
こんにちは。 かりんとうマニア(@karintozuki)です。
開発していると、Dockerイメージをどこかにアップロードしたいときがありますよね。
そんなときはGitHubのコンテナレジストリ(以下、ghcrとします)が便利です。
今日はその使い方を説明します。
GitHubのClassic Tokenを作る
ghcrはTokenでの認証を必要とします。それもClassicのTokenだけが使えるみたいです。
GitHubのアカウント設定から作ってください。
Tokenがクラシックであることと、パッケージの書き込み・読み取り権限を付与することを忘れないでください。
Dockerでログインする
Tokenを生成したらそれを控えて以下のコマンドを実行することで、Dockerにクレデンシャルを登録します。
1 |
|
これであなたのローカルのPCからghcrにイメージをプッシュすることができるはずです。
イメージをプッシュする
Dockerfile内でレポジトリを指定する
もしGithub Actionなどでイメージをプッシュするならこの工程は必要ありません。
手動でイメージをプッシュする際はそのイメージがどのレポジトリのイメージなのかを指定する必要があります。
Dockerfile内に以下の行を追加してください。
1 | LABEL org.opencontainers.image.source=レポジトリのURL |
それではDockerイメージを作ってプッシュしてみましょう。
イメージのビルド & プッシュ
イメージをビルドしていきます。-t
オプションを利用してタグを以下のようにつけてください。
タグ名はgchr.io/githubのuser名
で始めるようにしてください。イメージの名前とバージョンは自由です。
1 | docker build --target production -t ghcr.io/username/image-name:version-name |
私の例だと以下のようになります。
1 | docker build --target production -t ghcr.io/karintomania/visahack_scrape:0.2 |
以下のコマンドでイメージをプッシュします。
1 | docker push ghcr.io/username/image-name:0.2 |
そうするとGitHubのレポジトリにパッケージが追加されているはずです。
おまけ:Kubernetesからghcrのパッケージを利用する
最後にアップロードしたパッケージをk8sから使う方法も書いておきます。
以下のコマンドで生成したTokenをghcr-io-cred
という名前のCredentialとして登録します。名前は別に好きなもので大丈夫です。
1 | kubectl create secret docker-registry ghcr-io-cred \ |
そしてこのクレデンシャルをYamlファイルでimagePullSecrets
として指定します。
1 | spec: |
おまけのおまけ
私はminikubeを使っているので以下のアドオンを有効にする必要がありました。
1 | minikube addons enable registry-creds |
まとめ
GitHubにサクッとイメージを上げられるのは嬉しいですね。
DockerHubとかのサービスもありますが、ソースとイメージを一箇所に集めたかったので、GitHubレジストリがあって助かりました。
それじゃ今日はこの辺で。
関連記事
こちらの記事もおすすめです。