レジストリへのイメージのプッシュ
ビルドした Docker イメージを Docker Hub や GitHub Container Registry などのコンテナレジストリへプッシュするようワークフローを設定します。
「レジストリへのイメージのプッシュ」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
コンテナレジストリとは
コンテナレジストリは、Dockerイメージを安全に保管するオンラインストレージサービスです。アプリケーションのパッケージ専用に設計されたクラウドドライブのようなものだと考えてください。
- イメージのさまざまなバージョンを保存できます。
- 他のユーザーとイメージを簡単に共有できます。
- さまざまな環境へのデプロイに不可欠です。
レジストリを使う理由
レジストリは、現代のソフトウェア開発に不可欠です。次のような重要なメリットがあります。
- イメージの共有: アプリケーションイメージを簡単に配布できます。
- バージョン管理: アプリのさまざまなバージョンを保存・管理できます。
- 信頼性の高いデプロイ: 環境が異なっても一貫したデプロイを実現できます。
- セキュリティ: 多くのレジストリでは脆弱性スキャンを利用できます。
一般的なレジストリサービス
利用できるコンテナレジストリサービスは数多くあります。特によく利用されるものとして、次の2つがあります。
- Docker Hub: 広く使われているパブリックレジストリです。公開イメージの共有や個人プロジェクトに適しています。
- GitHub Container Registry(GHCR): GitHubリポジトリと緊密に統合されています。プライベートイメージや、すでにGitHubを利用している組織に適しています。
その他の主要なクラウドプロバイダーも、AWS ECRやGoogle Container Registryなどの独自のレジストリを提供しています。
レジストリ認証
レジストリにイメージをプッシュする前に、自分が誰であるかを証明する必要があります。このプロセスを認証、つまり「ログイン」と呼びます。
通常は、ユーザー名とPersonal Access Token(PAT)またはパスワードを入力します。これらの認証情報によって、承認されたユーザーだけがプライベートリポジトリからイメージをプッシュまたはプルできるようになります。
docker/login-actionの使用
GitHub ActionsでDocker互換のほとんどのレジストリに認証するには、docker/login-actionを使用するのが最適です。
このアクションは指定したレジストリにワークフローを安全にログインさせ、それ以降のステップでイメージをプッシュできるようにします。入力としてusernameとpasswordを受け取ります。
Docker Hubへのプッシュ
Docker Hubにイメージをプッシュするには、ワークフローで次の処理を行う必要があります。
- ログイン: Docker Hubのユーザー名と、GitHub Secretとして保存したPersonal Access Token(PAT)を使って
docker/login-actionを使用します。 - ビルドとプッシュ:
docker/build-push-actionを使用してイメージをビルドし、push: trueを設定します。イメージタグにDocker Hubのユーザー名が含まれていることを確認してください。例:your_username/my-app:latest
Docker Hubワークフローの例
DockerイメージをビルドしてDocker HubにプッシュするGitHub Actionsワークフローの例です。リポジトリでDOCKER_USERNAMEとDOCKER_TOKENをGitHub Secretsとして設定してください。
name: Publish Docker image to Docker Hub
on:
push:
branches: [ "main" ]
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/my-app:latestGHCRへのプッシュ
GitHub Container Registry(GHCR)は、GitHubとシームレスに統合できます。GHCRには次のような違いがあります。
- 認証: 組み込みの
GITHUB_TOKENを認証に使用できます。username: ${{ github.actor }}とpassword: ${{ secrets.GITHUB_TOKEN }}を設定します。 - 権限: ジョブに
packages: write権限が必要です。 - イメージのタグ付け: イメージには
ghcr.io/<OWNER>/<REPOSITORY>:<TAG>のようなタグを付けます。
GHCRワークフローの例
このワークフローでは、イメージをGitHub Container Registryにプッシュする方法を示します。permissionsブロックとイメージタグの形式に注目してください。
name: Publish Docker image to GHCR
on:
push:
branches: [ "main" ]
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write # Required for GHCR
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ghcr.io/${{ github.repository }}:latest理解度を確認しましょう
コンテナレジストリへのイメージのプッシュについて学んだことを簡単に復習しましょう。
復習:イメージをプッシュしましょう!
よくできました!GitHub Actionsを使用してDockerイメージをコンテナレジストリにプッシュする方法を学びました。
- コンテナレジストリは、Dockerイメージを保存・管理します。
- 認証情報を使用した認証は重要な最初のステップです。
docker/login-actionを使用すると、安全にログインできます。- Docker HubとGitHub Container Registryの両方の例を通して、それぞれに固有の認証方法とタグ付けの要件を確認しました。
次は、これらのイメージをKubernetesにデプロイする方法を学びます!
よくある質問
「レジストリへのイメージのプッシュ」レッスンは無料ですか?
はい。「レジストリへのイメージのプッシュ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「レジストリへのイメージのプッシュ」で何を学びますか?
ビルドした Docker イメージを Docker Hub や GitHub Container Registry などのコンテナレジストリへプッシュするようワークフローを設定します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「レジストリへのイメージのプッシュ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Actions による Docker イメージのビルド
- レジストリへのイメージのプッシュ
- Actions による Kubernetes へのデプロイ
- CI/CDにおけるHelm ChartとKubernetesマニフェスト