La oss utforske Docker Hub nærmere.
I denne veiledningen skal vi fordype oss i Docker Hub, inkludert hvordan du bruker den, prosessen med å lage egne bilder, og hvordan den forenkler publisering og henting av bilder til og fra Docker Hub. Vi vil også vie litt tid til å undersøke noen av de mest brukte lagringsstedene på Docker Hub.
Forutsetninger
Grunnleggende kjennskap til Docker, samt erfaring med Windows og Linux-miljøer er nødvendig. Denne veiledningen vil benytte seg av Docker Desktop-verktøyet for praktisk trening, spesielt for å bygge og sende et bilde til Docker Hub. Brukere av Windows og Mac kan laste ned og installere verktøyet her, mens Linux-brukere kan følge denne lenken.
Hva er Docker Hub egentlig?
Docker Hub er en lagringstjeneste for bilder, levert av Docker Inc.
Den lar oss laste opp og ned docker-bilder. Vi kan sammenligne det med GitHub, hvor vi laster opp og henter kildekode. I Docker Hubs tilfelle laster vi ned og publiserer containerbilder. Dette er et skybasert depot som lagrer både offentlige og private depoter. Offentlige depoter er tilgjengelige for alle, mens private depoter kun er tilgjengelig for eieren. Det er også kostnader knyttet til private depoter dersom man overstiger et visst antall.
Funksjoner i Docker Hub
Docker Hub tilbyr flere funksjoner, som listet opp nedenfor:
#1. Bildebeholdere
Dette gir oss mulighet til å finne og hente containerbilder fra Docker Hub.
Det gir oss også mulighet til å publisere bilder som offentlige eller private depoter til Docker Hub.
#2. Team og organisasjoner
Dette gir oss mulighet til å etablere arbeidsgrupper og publisere depoter som private, kun tilgjengelig for bruk innenfor vår organisasjon. Dermed får vi administrert tilgang til våre private containerbilder.
#3. Integrasjon med GitHub og Bitbucket
Det er mulig å integrere med kildekodelagre som GitHub og BitBucket.
#4. Automatiserte bygg
Ved endringer i kildekoden som er sendt til kildekodelagrene, vil systemet automatisk oppdage og bygge containerbilder fra GitHub eller BitBucket, og deretter publisere disse til Docker Hub.
#5. Webhooks
Ved vellykket publisering av bilder, kan en webhook utløse en handling for å integrere Docker Hub med andre tjenester.
#6. Offisielle bilder og utgiverbilder
Kvalitetsbilder levert av Docker regnes som offisielle bilder, og de kan hentes og brukes. Tilsvarende er kvalitetsbilder levert av eksterne leverandører utgiverbilder, også kjent som sertifiserte bilder, som garanterer støtte og kompatibilitet med Docker enterprise. Vi kommer tilbake til flere sertifiserte bilder senere i artikkelen.
Opprette et første depot
For å opprette et depot, må du først logge inn på Docker Hub med dine innloggingsdetaljer. Hvis du ikke har en konto, kan du enkelt opprette en ved å klikke på «Registrer deg»-knappen på nettsiden. Når du er logget inn, kan du opprette depotet ved å klikke på «Opprett depot» på velkomstsiden.
- Etter å ha klikket på «Opprett depot», vil du bli bedt om å angi et navn. Gi depotet ditt et passende navn.
- Velg et synlighetsalternativ, enten offentlig eller privat.
Vi kan også integrere våre kildekodelagre som GitHub og BitBucket gjennom byggeinnstillinger, men dette er valgfritt og kan gjøres senere.
- Når alt er klart, klikk «Opprett».
Gratulerer! Du har nå opprettet ditt første depot, som vil se omtrent slik ut.
Docker Hub gir oss ett privat depot gratis. Hvis vi trenger flere private depoter, kan vi oppgradere kontoen vår til en betalingsplan.
Åpne nå Docker Desktop-verktøyet/terminalen som du lastet ned og installerte tidligere, og logg deg inn på Docker Hub via en kommando:
docker login
Utforske bilder
Det finnes to måter å søke i offentlige depoter og bilder fra Docker Hub. Vi kan enten søke via Docker Hub-nettstedet, eller vi kan bruke kommandolinjeverktøyet og kjøre følgende kommando. La oss si at vi ønsker å søke etter MySQL-depotbildet:
docker search mysql
Laste ned et bilde
Vi kan laste ned et bilde fra Docker Hub ved å bruke «pull»-kommandoen, som følger:
# docker pull mysql
Hvis vi allerede har MySQL-bildet på maskinen, vil kommandoen automatisk oppdatere det til den nyeste versjonen. Det er viktig å merke seg at dersom vi ser på resultatet av Docker-søkekommandoutgangen, finnes det mange MySQL-bilder på Docker Hub, da hvem som helst kan publisere et bilde. Det er derfor opp til oss å vurdere hvilke bilder som er best egnet basert på vårt bruksområde.
La oss for eksempel si at vi ønsker å hente et bitnami/mysql-bilde:
# docker pull bitnami/mysql
Opprette et bilde
Denne prosessen krever en Dockerfile. En Dockerfile kan betraktes som en bruksanvisning som forteller Docker hva som skal bygges. Kort fortalt er det en konfigurasjonsfil med instruksjoner om hvordan vi ønsker at noe skal bygges.
Hvordan fungerer det?
Docker leser instruksjonene fra en Dockerfile og bygger bildene automatisk. Et Docker-bilde er et lagdelt filsystem bestående av flere skrivebeskyttede lag, hvor hvert lag representerer en instruksjon fra Dockerfilen. La oss følge trinnene nedenfor for å lage et bilde ved hjelp av Dockerfile.
Opprett en Dockerfile som spesifiserer applikasjonskonfigurasjonen:
# sudo vim Dockerfile
Merk: Filnavnet skal være «Dockerfile» med stor «D».
FROM ubuntu:16.04 MAINTAINER [email protected] RUN apt-get update RUN apt-get install –y mysql CMD echo "Mitt første bilde er opprettet."
La oss se nærmere på noen av de viktigste nøkkelordene som brukes i Dockerfile:
- Vi kan bruke «#»-symboler for å legge til kommentarer i en Dockerfile.
- Nøkkelordet «FROM» definerer basisbildet som skal brukes.
- «MAINTAINER»-nøkkelordet angir personen som skal vedlikeholde bildet.
- Nøkkelordet «RUN» brukes til å kjøre instruksjoner for bildet. I vårt tilfelle må vi først oppdatere systemet og deretter installere MySQL.
- Nøkkelordet «CMD» brukes til å utføre en kommando når containeren startes.
- Nøkkelordet «COPY» kan brukes til å kopiere en fil fra vårt vertsoperativsystem til Docker-containeren.
- Nøkkelordet «EXPOSE» brukes til å spesifisere portnummeret som containeren skal kjøre prosessen på.
Kjør kommandoen nedenfor for å bygge Docker-bildet:
Syntaks:
docker build -t <ditt_brukernavn>/<repo-navn> .
# docker build -t asadali08537/first-repo .
I kommandoen over er navnet på bildet og «.» angir gjeldende arbeidskatalog. Dette indikerer at Docker skal se etter Docker-filen i gjeldende katalog. «-t» brukes til å merke bildet. Resultatet bør se omtrent slik ut:
La oss nå teste bildet ved å kjøre det med «run»-kommandoen:
docker run asadali08527/first-repo
Utførelse av kommandoen ovenfor vil føre til at Docker-bildet installerer MySQL på maskinen din med alle nødvendige oppdateringer, og til slutt vise en ekkomelding.
Publisere et bilde
Når bildet er opprettet og kjører, kan vi publisere det til Docker Hub med kommandoen «push»:
docker push asadali08527/first-repo
Vi kan sjekke bildeetikettene og statusen på Docker Hub, som vil se omtrent slik ut:
Hva er Docker-sertifiserte bilder?
Dette er de offisielle bildene som er publisert av leverandører eller bidragsytere. Et bilde kan bare sertifiseres av Docker Hub hvis innholdet er i samsvar med de regler, standarder og lover som Docker Hub har definert. Kort sagt, bildet må bestå visse grunnleggende tester.
Docker Hub tilbyr inspectDockerImage-verktøyet, som lar en leverandør sertifisere sine bilder og plugins (vanligvis publiserer leverandøren eller bidragsyteren plugins for logging av volumer og nettverk).
Merk:
For å publisere et bilde som Docker-sertifisert, må vi først sertifisere og teste våre bilder og plugins gjennom inspectDockerImage. Etter vellykket sertifisering og testing, vil Docker Hub sertifisere det ved innsending. Hvis innholdet vårt krever et ikke-sertifisert miljø, kan det under ingen omstendigheter publiseres som sertifisert.
Populære bilder på DockerHub
Det finnes mange utvalgte og optimaliserte bilder tilgjengelig på Docker Hub.
Populariteten til disse bildene avhenger av ulike faktorer som antall nedlastinger, markedstilstedeværelse, rangeringer, tilfredshetsscore osv. For en detaljert liste over de mest populære depotene, kan du navigere til Docker Hubs nettside. Bruken av et bilde avhenger også av operativsystem og dets arkitektur. Hvis vi vet hvilke operativsystem og arkitektur de hentede bildene skal brukes for, bør vi vurdere følgende faktorer før vi henter et bilde:
- Se etter en spesifikk versjon ved hjelp av tagger (vanligvis den nyeste).
- Velg den som har maksimalt antall nedlastinger og stjerner.
- Sjekk oppdateringer (når det sist ble oppdatert).
- Hvis mulig, sjekk om det er en verifisert utgiver eller offisielt (Docker-sertifisert) bilde.
Webhooks
En webhook er en web-callback som fungerer med hendelser, og er en måte for en applikasjon å gi sanntidsinformasjon til en annen applikasjon. I dag har nesten alle applikasjoner en webhook-funksjon, og det har også Docker Hub.
Det er en HTTP-push-API som utløses av brukerdefinerte hendelser. Vi kan bruke en webhook i Docker for å varsle en applikasjon eller tjeneste som bruker de relevante bildene. Vanligvis konfigurerer vi webhooks med Docker som en hendelsespipeline, slik at enhver opplasting av nye bilder vil utløse testapplikasjoner for å kjøre stresstester.
Når testresultatet er vellykket, vil det utløse en annen hendelse, som vil være containerdistribusjon. Når distribusjonen er fullført, vil den utløse andre hendelser for å logge endringene som er gjort.
Konklusjon
Jeg håper du nå har en god forståelse av Docker Hub og hvordan du kan søke etter, lage og publisere bilder. Husk at når du publiserer offentlige bilder, vil de være synlige for alle.
Hvis du ikke allerede har gjort det, bør du sjekke ut denne Docker-installasjonsveiledningen.