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:
- Zalogować się: Użyć
docker/login-actionz nazwą użytkownika Docker Hub i osobistym tokenem dostępu (PAT) przechowywanym jako sekret GitHub. - Zbudować i wysłać obraz: Użyć
docker/build-push-actiondo 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:latestWysył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 }}orazpassword: ${{ 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 }}:latestSprawdź 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-actionpomaga 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
- Budowanie obrazów Docker za pomocą Actions
- Wysyłanie obrazów do rejestrów
- Wdrażanie do Kubernetes za pomocą Actions
- Wykresy Helm i manifesty Kubernetes w CI/CD