0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · Lekcja

Wysyłanie obrazów do rejestrów

Skonfigurują Państwo workflows do wysyłania zbudowanych obrazów Docker do rejestrów kontenerów, takich jak Docker Hub lub GitHub Container Registry.

Wysyłanie obrazów do rejestrów to bezpłatna lekcja CI/CD with GitHub Actions & DevOps Pipelines na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej CI/CD with GitHub Actions & DevOps Pipelines, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs CI/CD with GitHub Actions & DevOps Pipelines zawiera 4 lekcji w sumie.

Czym są rejestry kontenerów?

Rejestr kontenerów to bezpieczna internetowa usługa przechowywania obrazów Docker. Można myśleć o nim jak o dysku w chmurze przeznaczonym specjalnie na pakiety aplikacji.

  • Przechowuje różne wersje obrazów.
  • Ułatwia udostępnianie obrazów innym osobom.
  • Ma kluczowe znaczenie podczas wdrażania aplikacji w różnych środowiskach.

Dlaczego używać rejestrów?

Rejestry są niezbędne we współczesnym tworzeniu oprogramowania. Zapewniają kilka ważnych korzyści:

  • Udostępnianie obrazów: Łatwe rozpowszechnianie obrazów aplikacji.
  • Kontrola wersji: Przechowywanie i zarządzanie różnymi wersjami aplikacji.
  • Niezawodne wdrażanie: Zapewnienie spójnych wdrożeń w różnych środowiskach.
  • Bezpieczeństwo: Wiele rejestrów oferuje skanowanie pod kątem luk w zabezpieczeniach.

Popularne usługi rejestrów

Dostępnych jest wiele usług rejestrów kontenerów. Dwie popularne usługi, z którymi często się Państwo spotkają, to:

  • Docker Hub: Powszechnie używany rejestr publiczny. Doskonale nadaje się do udostępniania publicznych obrazów i projektów osobistych.
  • GitHub Container Registry (GHCR): Ściśle zintegrowany z repozytoriami GitHub. Doskonały do przechowywania prywatnych obrazów i dla organizacji, które już korzystają z GitHub.

Inni główni dostawcy chmurowi również oferują własne rejestry, takie jak AWS ECR czy Google Container Registry.

Uwierzytelnianie w rejestrze

Zanim będzie można wysłać obraz do rejestru, należy potwierdzić swoją tożsamość. Ten proces nazywa się uwierzytelnianiem, czyli „logowaniem”.

Zwykle podaje się nazwę użytkownika oraz osobisty token dostępu (PAT) lub hasło. Te dane uwierzytelniające gwarantują, że tylko upoważnieni użytkownicy mogą wysyłać obrazy do prywatnych repozytoriów lub pobierać je z nich.

Używanie docker/login-action

W GitHub Actions najlepszym sposobem uwierzytelniania w większości rejestrów zgodnych z Dockerem jest użycie akcji docker/login-action.

Ta akcja bezpiecznie loguje workflow do określonego rejestru, umożliwiając kolejnym krokom wysyłanie obrazów. Przyjmuje dane wejściowe username i password.

Wysyłanie do Docker Hub

Aby wysłać obraz do Docker Hub, workflow musi:

  1. Zalogować się: Użyć docker/login-action z nazwą użytkownika Docker Hub i osobistym tokenem dostępu (PAT) przechowywanym jako sekret GitHub.
  2. Zbudować i wysłać obraz: Użyć docker/build-push-action do zbudowania obrazu i ustawić push: true. Należy upewnić się, że tag obrazu zawiera nazwę użytkownika Docker Hub, np. your_username/my-app:latest.

Przykład workflow dla Docker Hub

Oto przykład workflow GitHub Actions do budowania i wysyłania obrazu Docker do Docker Hub. Należy pamiętać o skonfigurowaniu DOCKER_USERNAME i DOCKER_TOKEN jako sekretów GitHub w repozytorium.

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:latest

Wysyłanie do GHCR

GitHub Container Registry (GHCR) oferuje płynną integrację. Najważniejsze różnice w przypadku GHCR:

  • Uwierzytelnianie: Do uwierzytelniania można użyć wbudowanego elementu GITHUB_TOKEN. Należy ustawić username: ${{ github.actor }} oraz password: ${{ secrets.GITHUB_TOKEN }}.
  • Uprawnienia: Zadanie musi mieć uprawnienie packages: write.
  • Nadawanie tagów obrazom: Obrazy otrzymują tagi w formacie ghcr.io/<OWNER>/<REPOSITORY>:<TAG>.

Przykład workflow dla GHCR

Ten workflow pokazuje wysyłanie obrazu do GitHub Container Registry. Zwróćcie Państwo uwagę na blok permissions i format tagu obrazu.

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

Sprawdź swoją wiedzę

Krótko powtórzmy to, czego nauczyli się Państwo o wypychaniu obrazów do rejestrów kontenerów.

Podsumowanie: wypychanie obrazów

Świetna praca! Nauczyli się Państwo wypychać obrazy Docker do rejestrów kontenerów za pomocą GitHub Actions.

  • Rejestry kontenerów przechowują obrazy Docker i zarządzają nimi.
  • Uwierzytelnianie za pomocą danych uwierzytelniających jest kluczowym pierwszym krokiem.
  • docker/login-action pomaga bezpiecznie się zalogować.
  • Poznali Państwo przykłady zarówno dla Docker Hub, jak i GitHub Container Registry, a także ich specyficzne wymagania dotyczące uwierzytelniania i tagowania.

W następnym kroku dowiedzą się Państwo, jak wdrażać te obrazy w Kubernetes!

Często zadawane pytania

Czy lekcja „Wysyłanie obrazów do rejestrów” jest bezpłatna?

Tak — pełny tekst „Wysyłanie obrazów do rejestrów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu CI/CD with GitHub Actions & DevOps Pipelines, przejdź na CoddyKit PRO. Kurs CI/CD with GitHub Actions & DevOps Pipelines zawiera 4 lekcji w sumie.

Co nauczysz się w „Wysyłanie obrazów do rejestrów”?

Skonfigurują Państwo workflows do wysyłania zbudowanych obrazów Docker do rejestrów kontenerów, takich jak Docker Hub lub GitHub Container Registry. Ćwiczysz CI/CD with GitHub Actions & DevOps Pipelines z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć CI/CD with GitHub Actions & DevOps Pipelines?

Nie wymagamy żadnego doświadczenia. CI/CD with GitHub Actions & DevOps Pipelines w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Wysyłanie obrazów do rejestrów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji CI/CD with GitHub Actions & DevOps Pipelines?

Tak. Każda lekcja CI/CD with GitHub Actions & DevOps Pipelines zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Budowanie obrazów Docker za pomocą Actions
  2. Wysyłanie obrazów do rejestrów
  3. Wdrażanie do Kubernetes za pomocą Actions
  4. Wykresy Helm i manifesty Kubernetes w CI/CD
← Powrót do CI/CD with GitHub Actions & DevOps Pipelines