Inleiding
Google Container Registry (GCR) is een dienst waarmee je Docker-containerimages in de cloud kunt opslaan en beheren. In deze handleiding lees je hoe je Docker-images naar Google Container Registry kunt pushen (uploaden) en eruit kunt pullen (downloaden).
Zie GCR als een opslagruimte in de cloud voor je Docker-images. In plaats van images alleen op je computer te bewaren, kun je ze uploaden naar GCR en ze overal vandaan openen.
Wat u nodig hebt voordat u begint
Zorg ervoor dat u het volgende hebt voordat u begint:
- Google Cloud-account - Een actief account met de juiste rechten
- Docker geïnstalleerd - Docker draait op uw computer
- Google Cloud SDK - De gcloud-opdrachtregeltool is geïnstalleerd
- GCP-project - Een Google Cloud-project is aangemaakt en klaar voor gebruik
Stap 1: Google Cloud SDK instellen
De Google Cloud SDK biedt tools om te communiceren met Google Cloud-services. U moet deze eerst configureren.
gcloud initialiseren
Open uw terminal en voer het volgende uit:
$ gcloud init
Dit commando zal:
- U vragen om in te loggen op uw Google Cloud-account
- U laten kiezen welk project u wilt gebruiken
- Standaardinstellingen voor uw commando's instellen
Belangrijk: Zorg ervoor dat u het juiste project selecteert, want uw images worden in dat project opgeslagen.
Controleer uw configuratie
Controleer na de installatie uw instellingen:
$ gcloud config list
Dit toont uw huidige account, project en andere instellingen.
Stap 2: Docker verbinden met Google Cloud
Om Docker te laten communiceren met Google Container Registry, moet u authenticatie instellen.
Docker-authenticatie configureren
Voer deze opdracht uit:
$ gcloud auth configure-docker
Wanneer om bevestiging wordt gevraagd, typt u Y en drukt u op Enter.
Wat dit doet
Dit commando vertelt Docker om uw Google Cloud-inloggegevens te gebruiken bij het verbinden met GCR. Het maakt of wijzigt een bestand in ~/.docker/config.json waarin deze authenticatiegegevens worden opgeslagen.
Controleer de installatie
Controleer of het configuratiebestand is aangemaakt:
$ cat ~/.docker/config.json
U zou de eindpunten van Google Container Registry in het bestand moeten zien staan.
Stap 3: Bekijk uw containerimages
Zodra u bent geauthenticeerd, kunt u zien welke images in uw registry zijn opgeslagen.
Alle images weergeven
Om alle images in uw project te bekijken:
$ gcloud container images list
Dit geeft images weer in de indeling: HOSTNAME/PROJECT-ID/IMAGE-NAME
Imagetags bekijken
Om alle versies (tags) van een specifieke image te zien:
$ gcloud container images list-tags gcr.io/YOUR_PROJECT_ID/IMAGE_NAME
Tags helpen je om verschillende versies van dezelfde image bij te houden (zoals v1.0, v2.0, latest).
Stap 4: Afbeeldingen ophalen uit GCR
Ophalen betekent het downloaden van een afbeelding van GCR naar uw lokale computer.
Basisopdracht voor ophalen
De syntaxis is:
$ docker pull HOSTNAME/PROJECT-ID/IMAGE:TAG
Laten we dit eens uitleggen:
- HOSTNAME: De locatie van het register (zoals
gcr.io) - PROJECT-ID: Uw Google Cloud-project-ID
- IMAGE: De naam van uw image
- TAG: De gewenste versie (zoals
latestofv1.0)
Voorbeeld
Om een nginx-image te pullen:
$ docker pull gcr.io/myproject/nginx:latest
Registry-locaties
GCR biedt verschillende locaties voor betere prestaties:
gcr.io- Wereldwijd (meerdere regio's)us.gcr.io- Verenigde Stateneu.gcr.io- Europese Unieasia.gcr.io- Azië
Kies de locatie die het dichtst bij u in de buurt is voor snellere downloads.
Controleer de download
Controleer na het ophalen of de image op uw computer staat:
$ docker images
U zou de gedownloade image in de lijst moeten zien staan.
Stap 5: Images naar GCR pushen
Pushen betekent het uploaden van een image vanaf uw computer naar GCR.
Bouw eerst uw image
Als u uw Docker-image nog niet hebt gebouwd:
$ docker build -t myimage:tag .
Hiermee maak je een image aan op basis van je Dockerfile.
Geef je image een tag voor GCR
Voordat je pusht, moet je je image taggen volgens het GCR-formaat:
$ docker image tag SOURCE_IMAGE:TAG HOSTNAME/PROJECT-ID/IMAGE:TAG
Voorbeeld
Stel dat je een lokale image hebt met de naam nginxlocal:latest:
$ docker image tag nginxlocal:latest gcr.io/myproject/nginx:latest
Wat dit doet:
- Neemt je lokale image
nginxlocal:latest - Maakt een nieuwe tag
gcr.io/myproject/nginx:latest - Beide tags verwijzen naar dezelfde image (er wordt niet gekopieerd)
Controleer je tags
Controleer of de tag is aangemaakt:
$ docker images
Je ziet beide:
nginxlocal:latest(je originele)gcr.io/myproject/nginx:latest(de nieuwe tag)
Ze hebben dezelfde IMAGE ID omdat het dezelfde image is.
Uploaden naar GCR
Push de image nu naar Google Container Registry:
$ docker image push --all-tags gcr.io/myproject/nginx
De vlag --all-tags uploadt alle versies van de image in één keer.
Wat gebeurt er tijdens het pushen
Je ziet:
- Voortgangsbalkjes die de uploadstatus weergeven
- Welke image-lagen worden geüpload
- Bevestiging wanneer de upload is voltooid
Docker is slim: als een laag al in GCR bestaat, wordt deze niet opnieuw geüpload.
Controleer de upload
Controleer of je image nu in GCR staat:
$ gcloud container images list
Of controleer specifieke tags:
$ gcloud container images list-tags gcr.io/myproject/nginx
Sneloverzicht commando's
Instellen
# Initialiseer gcloud
$ gcloud init
# Configureer Docker-authenticatie
$ gcloud auth configure-docker
Afbeeldingen bekijken
# Alle images weergeven
$ gcloud container images list
# Tags voor een image weergeven
$ gcloud container images list-tags gcr.io/PROJECT-ID/IMAGE
Images ophalen
# Ophalen uit GCR
$ docker pull gcr.io/PROJECT-ID/IMAGE:TAG
# Lokale images bekijken
$ docker images
Afbeeldingen pushen
# Afbeelding bouwen
$ docker build -t myimage:tag .
# Tag voor GCR
$ docker image tag myimage:tag gcr.io/PROJECT-ID/IMAGE:TAG
# Naar GCR pushen
$ docker image push --all-tags gcr.io/PROJECT-ID/IMAGE
Veelvoorkomende problemen en oplossingen
Probleem: authenticatiefout
Oplossing: vernieuw je aanmelding
$ gcloud auth login
$ gcloud auth configure-docker
Probleem: toegang geweigerd
Oplossing: controleer of je account de juiste rechten heeft in de Google Cloud Console. Je hebt rollen nodig zoals Storage Admin of Storage Object Creator.
Probleem: Verkeerd project
Oplossing: Stel het juiste project in
$ gcloud config set project YOUR_PROJECT_ID
Probleem: Trage upload/download
Oplossing:
- Controleer je internetverbinding
- Gebruik een regionaal register dat dichter bij je locatie ligt
- Probeer het opnieuw tijdens daluren
Aanbevolen werkwijzen
Uw afbeeldingen een naam geven
Gebruik duidelijke, beschrijvende namen:
- Goed:
gcr.io/myproject/web-api:v1.0.0 - Slecht:
gcr.io/myproject/img1:latest
Tagstrategie
- Gebruik versienummers:
v1.0.0,v1.0.1 - Gebruik omgevingslabels:
dev,staging,prod - Label altijd specifieke versies, vertrouw niet alleen op
latest
Houd afbeeldingen schoon
- Verwijder regelmatig oude, ongebruikte afbeeldingen
- Gebruik waar mogelijk kleinere basisafbeeldingen
- Verwijder onnodige bestanden uit uw afbeeldingen
Beveiligingstips
- Sla geen wachtwoorden of geheime gegevens op in images
- Scan images op beveiligingskwetsbaarheden
- Gebruik privé-repositories voor gevoelige applicaties
- Stel de juiste toegangscontroles in Google Cloud in
Google Container Registry maakt het eenvoudig om Docker-images op te slaan en te delen in de cloud. Met deze basiscommando's kunt u nu uw container-images effectief beheren.
U bent nu klaar om met Docker-images in Google Container Registry aan de slag te gaan!