Docker-veiledning for nybegynnere: Grunnleggende, Architecture, Containere

โšก Smart oppsummering

Docker er en containerplattform som pakker applikasjoner og deres avhengigheter inn i bรฆrbare, lette containere. Denne oversikten forklarer Docker-arkitektur, installasjon pรฅ Ubuntu, viktige kommandoer og hvordan containere skiller seg fra tradisjonelle virtuelle maskiner for raskere programvarelevering.

  • ???? Containerisering: Docker virtualiserer pรฅ operativsystemnivรฅ, slik at containere deler vertskjernen og bruker fรฆrre ressurser enn virtuelle maskiner.
  • ๐Ÿงฑ Archilรฆre: Docker-motoren (dockerd), bilder, registre og containere danner klient-server-arkitekturen bak hver Docker-arbeidsflyt.
  • ๐Ÿ“ฆ Bilder og beholdere: Et bilde er en skrivebeskyttet mal, mens en container er en kjรธrende kopi, og ett bilde kan starte mange containere.
  • ๐Ÿ—„๏ธ Registre: Docker Hub lagrer offentlige og private bilder, noe som gir deg millioner av bruksklare bilder du kan hente og kjรธre.
  • โš™๏ธ Installasjon: On Ubuntu Du legger til Docker APT-repositoriet og GPG-nรธkkelen, og installerer deretter docker-ce-pakken med apt-get.
  • โŒจ๏ธ Kjernekommandoer: Administrer containere med docker pull, run, start, stop, ps, stats og images fra kommandolinjen.

Docker-veiledning for nybegynnere som dekker arkitektur og installasjon pรฅ Ubuntuog grunnleggende containerkommandoer

Docker er en av de mest populรฆre containeriseringsplattformene som brukes i moderne DevOps og skybaserte arbeidsflyter. Denne Docker-opplรฆringen for nybegynnere forklarer hva Docker er, hvordan Docker-arkitekturen fungerer, hvordan man installerer Docker pรฅ Ubuntu, og de grunnleggende kommandoene som brukes til รฅ administrere bilder og containere.

Hva er Docker?

Docker er en programvareutviklingsplattform for virtualisering som lar flere operativsystemer kjรธre pรฅ samme vert. Den hjelper deg med รฅ skille infrastruktur fra applikasjoner slik at du kan levere programvare raskt. I motsetning til hypervisorer, som brukes til รฅ lage virtuelle maskiner (VM-er), utfรธrer Docker virtualisering pรฅ systemnivรฅ ved hjelp av enheter kalt Docker-containere.

Docker-containere kjรธrer oppรฅ vertsoperativsystemet, som vist pรฅ bildet nedenfor. Dette forbedrer bรฅde effektivitet og sikkerhet. Du kan ogsรฅ kjรธre flere containere enn virtuelle maskiner pรฅ samme infrastruktur, fordi containere bruker fรฆrre ressurser.

Virtualisering i Docker vs Hypervisor
Virtualisering i Docker vs Hypervisor

I motsetning til virtuelle maskiner, som kan kommunisere direkte med vertsmaskinvaren (for eksempel en Ethernet-adapter som oppretter flere virtuelle adaptere), kjรธrer Docker-containere i et isolert miljรธ oppรฅ verts-OS-et. Selv om verten din kjรธrer Windows, du kan kjรธre Linux bilder inni beholdere ved hjelp av Hyper-V, som automatisk oppretter en liten virtuell maskin for รฅ virtualisere basisavbildningen.

Nรฅ som du vet hva Docker er, la oss se pรฅ hovedgrunnene til at team velger det.

Hvorfor bruke Docker?

Her er de viktigste grunnene til รฅ bruke Docker:

  • Docker er programvare som brukes til virtualisering, som tillater flere operativsystemer รฅ kjรธre pรฅ samme vert.
  • Docker er en klient-server-applikasjon, som betyr at klienter kommuniserer med en server.
  • Docker-bilder fungerer som ยซkildekodeยป for containere; du bruker dem til รฅ bygge.
  • Docker stรธtter to typer registre: offentlige og private.
  • Containere er organisasjonsenhetene i Docker. Enkelt sagt er et image en mal og en container er en kopi av den malen, slik at du kan kjรธre flere containere fra samme image.

Disse fordelene kommer fra mรฅten Docker er designet pรฅ. Fรธlgende avsnitt gรฅr gjennom Docker-arkitekturen og dens kjernekomponenter.

Docker Architecture

I denne Docker-containeropplรฆringen skal vi nรฅ se pรฅ hovedkomponentene i Docker-arkitekturen.

Docker ArchiTeknologikomponenter: motor, bilder, registre og containere

Docker Architecture

Docker-motor

Docker er en klient-server-applikasjon, som betyr at vi har klienter som videresender forespรธrsler til en server. Docker-daemonen, kalt dockerd, er Docker-motoren som representerer serveren. Daemonen og klientene kan kjรธre pรฅ samme eller en ekstern vert, og de kommuniserer via en kommandolinjeklientbinรฆrfil og en fullstendig RESTful API som samhandler med dockerd.

Docker-bilder

Docker-bilder er ยซkildekodenยป for containerne vรฅre. Vi bruker dem til รฅ bygge containere. Bilder kan ha forhรฅndsinstallert programvare, noe som fremskynder utrullingen. De er bรฆrbare, og du kan bruke eksisterende bilder eller bygge dine egne.

Docker-registre

Docker lagrer bildene vi bygger i registre. Det finnes offentlige og private registre. Docker har et offentlig register som heter Docker hub, hvor du ogsรฅ kan lagre bilder privat. Docker Hub har millioner av bilder du kan begynne รฅ bruke med en gang.

Dockerbeholdere

Containere er de organisatoriske enhetene i Docker og et av dets grunnleggende konsepter. Nรฅr vi bygger et image og kjรธrer det, kjรธrer vi det inne i en container. Containeranalogien brukes pรฅ grunn av portabiliteten til programvaren som kjรธrer inni den: du kan flytte, "sende", endre, administrere, opprette eller รธdelegge det, akkurat som lasteskip hรฅndterer ekte containere.

Enkelt sagt er et bilde en mal, og en beholder er en kopi av den malen. Du kan ha flere beholdere (kopier) av det samme bildet.

Samspillet mellom disse ulike komponentene viser hvordan Docker-containerteknologi fungerer sammen. Kommandoer som docker pull og docker run, som vi dekker senere, lar deg administrere denne arbeidsflyten.

Med arkitekturen i tankene, la oss installere Docker slik at du kan prรธve disse komponentene selv.

Hvordan installere Docker pรฅ Linux/Ubuntu

Nedenfor finner du en trinnvis Docker-installasjonsprosess pรฅ Linux/Ubuntu:

Trinn 1) For รฅ installere Docker trenger du Docker-teamets DEB-pakker. Fรธrst noen forutsetninger Ubuntu Pakker er nรธdvendige. Bruk kommandoen nedenfor for รฅ installere dem.

$ sudo apt-get install \
apt-transport-https \
ca-certificates curl \
software-properties-common

*tegnet "\" er ikke nรธdvendig det brukes for den nye linjen, hvis du vil kan du skrive kommandoen uten รฅ bruke "\" kun pรฅ รฉn linje.

Trinn 2) Legg til den offisielle Docker GPG-nรธkkelen med fingeravtrykket. Bruk Docker-kommandoen nedenfor for รฅ angi GPG-nรธkkelen.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Trinn 3) Deretter legger du til Docker APT-depotet ved รฅ bruke kommandoen nedenfor.

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

Du kan bli bedt om รฅ bekrefte at du รธnsker รฅ legge til depotet og at GPG-nรธkkelen automatisk skal legges til pรฅ verten din. Kommandoen lsb_release skal fylle ut Ubuntu distribusjonsversjon av verten din.

Trinn 4) Etter at du har lagt til GPG-nรธkkelen, oppdaterer du APT-kildene ved hjelp av Docker-kommandoen nedenfor.

$ sudo apt-get update

Du kan nรฅ installere selve Docker-pakken.

Trinn 5) Nรฅr APT-kildene er oppdatert, begynn รฅ installere Docker-pakkene pรฅ Ubuntu ved รฅ bruke Docker-kommandoen nedenfor.

$ sudo apt-get install docker-ce

Kommandoen ovenfor installerer Docker og andre nรธdvendige pakker. Fรธr Docker 1.8.0 var pakkenavnet lxc-docker, og mellom Docker 1.8 og 1.13 var pakkenavnet docker-engine.

NOTAT: Docker for Windows Krever Windows 10 Pro eller Enterprise versjon 14393, eller Windows Server 2016 RTM, for รฅ kjรธre.

Slik bruker du Docker ved รฅ bruke grunnleggende Docker-kommandoer

Slik bruker du Docker med noen fรฅ grunnleggende Docker-kommandoer.

Den mest grunnleggende kommandoen du bรธr kjรธre etter at du har installert Docker er docker info, som nevnt tidligere.

$ sudo docker info

Du bรธr fรฅ et resultat som ligner pรฅ det fรธlgende.

Bruk Docker med grunnleggende Docker-kommandoer, som viser utdata for docker-informasjon

Som vist i Docker-eksemplet ovenfor, kan vi se informasjon om Docker-containere: hvor mange som kjรธrer, er satt pรฅ pause eller stoppet, og hvor mange bilder som er lastet ned. La oss nรฅ fรฅ vรฅrt fรธrste bilde.

$ sudo docker pull alpine

Med denne kommandoen ber vi Docker laste ned alpine-avbildningen, og hente den fra det offentlige registeret i den nyeste versjonen, som er satt som standard.

*alpine er et minimalt Docker-bilde basert pรฅ Alpine Linux med en komplett pakkeindeks og kun 5 MB i stรธrrelse.

Hvis vi vil kjรธre bildet som en container, bruker vi fรธlgende kommando.

$ sudo docker run -i -t alpine /bin/bash

ร… kjรธre kommandoen sender oss direkte til Alpine-terminalen. -i-flagget holder STDIN รฅpen fra containeren selv nรฅr du ikke er koblet til den; denne vedvarende standardinndataen er den ene halvdelen av det du trenger for et interaktivt skall. -t-flagget er den andre halvdelen og instruerer Docker til รฅ tilordne en pseudo-tty til containeren. Sammen gir de oss et interaktivt skall i den nye containeren. Vi avslutter containeren med en enkel exit-kommando.

Nรฅ, i denne grunnleggende Docker-veiledningen, kan vi prรธve รฅ kjรธre en Ubuntu bilde.

$ sudo docker run -it ubuntu /bin/bash

Legg merke til at Docker sjekker etter bildet lokalt, og hvis det ikke er der, hentes bildet automatisk fra bildebiblioteket. Igjen har vi et interaktivt skall som kjรธrer. Vi kan ogsรฅ navngi containere mens vi kjรธrer dem.

$ sudo docker run โ€“-name our_container -it ubuntu /bin/bash

Sรฅ avslutter vi igjen. Vi kan ogsรฅ kjรธre en container vi opprettet tidligere uten et interaktivt skall.

$ sudo docker start container_name

Og vi stopper containeren ved รฅ skrive docker stop container_name.

$ sudo docker stop container_name

Hvis vi vil se alle containere som kjรธrer, kjรธrer vi ganske enkelt fรธlgende.

$ docker ps

For alle containere legger vi til ยซ-aยป pรฅ slutten av samme kommando, som docker ps -a. Denne kommandoen viser container-ID-en, hvilket bilde den bruker, nรฅr den ble opprettet, kjรธrestatus, eksponerte porter og et tilfeldig generert navn for enklere administrasjon.

Nรฅr vi kjรธrer containere, รธnsker vi ofte รฅ vite hvor mange ressurser de bruker. Til det formรฅlet kan vi bruke fรธlgende kommando.

$ docker stats

Du kan ogsรฅ se hvilke bilder du har lastet ned lokalt, sammen med informasjon om dem.

$ sudo docker images

Kommandoen i Docker-eksemplet ovenfor viser hvert Docker-bilde med en tagg som viser bildeversjonen, en sรฆregen bilde-ID, opprettelsesdatoen og bildestรธrrelsen.

For รฅ forstรฅ hvorfor containere er en slik forbedring, er det nyttig รฅ se pรฅ hvordan virtualisering utviklet seg.

Hva er virtualisering?

Tidligere var det tregt og smertefullt รฅ distribuere en tjeneste. Utviklere skrev kode, og deretter distribuerte driftsteamet den pรฅ bare-metal-maskiner, hvor de mรฅtte passe pรฅ bibliotekversjoner, oppdateringer og sprรฅkkompilatorer slik at koden skulle fungere. Hvis det var feil eller feil, startet prosessen pรฅ nytt: utviklerne fikset problemet, og driftsteamet distribuerte den pรฅ nytt.

Ting ble bedre med opprettelsen av hypervisorer. Hypervisorer kjรธrer flere virtuelle maskiner, eller virtuelle maskiner, pรฅ samme vert, som kan kjรธre eller vรฆre slรฅtt av. Virtuelle maskiner reduserte ventetiden for utrulling av kode og feilretting betraktelig, men den virkelige banebrytende var Docker-containere.

Dockers popularitet er ogsรฅ drevet av orkestreringsverktรธy som administrerer containere i stor skala, for eksempel KubernetesFรธr vi gรฅr videre, er her en rask oversikt over de viktigste Docker-kommandoene.

Viktige Docker-kommandoer

Nedenfor er de viktige Docker-kommandoene:

Kommando Tekniske beskrivelser
docker info Informasjonskommando
docker pull Last ned et bilde
docker run -i -t bildenavn /bin/bash Kjรธr bildet som en beholder
docker start our_container Start beholderen
docker stop container_name Stopp beholderen
docker ps Liste over alle kjรธrende containere
docker-statistikk Beholderinformasjon
docker bilder Liste over bilder som er lastet ned
Docker Cleanup Drep alle kjรธrende containere.

Les ogsรฅ disse Docker jobbintervju spรธrsmรฅl og svar for sรฅ vel nyutdannede som erfarne fagfolk.

Spรธrsmรฅl og svar

En Docker-container deler kjernen til vertsoperativsystemet og isolerer bare applikasjonen, slik at den er lett og starter i lรธpet av sekunder. En virtuell maskin pakker et komplett gjesteoperativsystem, noe som gjรธr den stรธrre, tregere รฅ starte opp og mer ressurskrevende.

En Dockerfile er et skript i ren tekst som inneholder instruksjoner som FROM, RUN, COPY og CMD. Docker leser disse instruksjonene for รฅ bygge et bilde automatisk. Hver linje legger til et lag, slik at du kan reprodusere det samme miljรธet pรฅ en hvilken som helst maskin.

Docker Compose definerer og kjรธrer flercontainerapplikasjoner ved hjelp av รฉn YAML-fil. Du beskriver hver tjeneste, nettverk og volum รฉn gang, og starter deretter alt med docker compose up-kommandoen. Den er ideell for lokal utvikling og testing av tilkoblede tjenester.

Docker bygger og kjรธrer individuelle containere, mens Kubernetes orkestrerer mange containere pรฅ tvers av en klynge. Kubernetes legger til automatisk skalering, selvreparasjon og lastbalansering. I praksis pakker Docker applikasjonen, og Kubernetes administrerer den i produksjon.

Docker Engine er gratis og รฅpen kildekode under Apache 2.0-lisensen. Docker Desktop er gratis for personlig bruk, utdanning og smรฅ bedrifter, men stรธrre selskaper trenger et betalt abonnement. Docker Hub tilbyr bรฅde gratis og betalte planer for imagehosting.

Docker kjรธrer innebygd pรฅ Linux og stรธttes pรฅ Windows og macOS gjennom Docker Desktop. Pรฅ Windows og Mac, bruker Docker en lett virtuell maskin til รฅ kjรธre Linux-kjernen som containere krever. De fleste containeravbildninger er Linux-baserte.

AI-assistenter genererer Dockerfiles, docker-compose-filer og CLI-kommandoer fra ledetekster i lettfattelig format. De leser ogsรฅ byggelogger og containerfeil, forklarer รฅrsaken og foreslรฅr rettelser. Sjekk alltid den genererte konfigurasjonen for riktige bildekoder, stier og sikkerhet fรธr du kjรธrer den.

Ja. GitHub Copilot og ChatGPT kan utarbeide Dockerfiles- og Compose-filer fra en kort kommentar eller beskrivelse. De fremskynder standardversjonen, men du bรธr bekrefte basisbilder, versjoner og beste praksis, fordi genererte snutter kan bruke utdaterte standardinnstillinger.

Oppsummer dette innlegget med: