I vår Docker-veiledning gir vi deg en innføring i virtualiseringsplattformen Docker og viser deg hvordan du bruker Docker på Ubuntu 22.04-systemet ditt ved hjelp av enkle instruksjoner.

Dockers oppbygning og funksjoner

«Bygg, distribuer og kjør hvilken som helst app, hvor som helst» – dette er Dockers motto. Den åpne kildekode-baserte containerplattformen tilbyr et fleksibelt og ressursbesparende alternativ for emulering av maskinvarekomponenter basert på virtuelle maskiner (VM-er).

Mens tradisjonell maskinvarevirtualisering går ut på å kjøre flere gjestesystemer på et felles vertsystem, kjøres Docker-applikasjoner som isolerte prosesser på samme system ved hjelp av containere. Dette kalles containerbasert virtualisering, også kjent som virtualisering på operativsystemnivå.

Image: Virtual machines and software containers in comparison
While each virtual machine launches its own operating system, Docker containers share the core of the host system

En stor fordel med containerbasert virtualisering er at applikasjoner med ulike krav kan kjøres isolert fra hverandre uten at det kreves ekstra ressurser i form av et eget gjestesystem. I tillegg kan applikasjoner med containere distribueres på tvers av plattformer og i ulike infrastrukturer uten at de må tilpasses vertsystemets maskinvare- eller programvarekonfigurasjoner.

Docker er det mest populære programvareprosjektet som gir brukerne tilgang til containerbasert virtualiseringsteknologi. Denne åpen kildekode-plattformen bygger på tre grunnleggende komponenter. For å kunne kjøre containere trenger brukerne kun Docker-motoren samt spesielle Docker-bilder, som kan hentes fra Docker Hub eller lages selv.

Docker-bilder

I likhet med virtuelle maskiner er Docker-containere basert på Docker-bilder. Et bilde er en skrivebeskyttet mal som inneholder alle instruksjonene Docker-motoren trenger for å opprette en container. Et Docker-bilde beskrives som et portabelt bilde av en container i form av en tekstfil, også kalt en Dockerfile. Hvis en container skal startes på et system, lastes først en pakke med det aktuelle bildet inn, forutsatt at den ikke finnes lokalt. Det lastede bildet gir det nødvendige filsystemet, inkludert alle parametere for kjøretiden. En container kan betraktes som en kjørende prosess av et bilde.

Docker Hub

Docker Hub er et skybasert register for programvarearkiver, en slags bibliotek for Docker-bilder. Nettjenesten er delt inn i en offentlig og en privat del. Den offentlige delen gir brukerne muligheten til å laste opp egne bilder og dele dem med fellesskapet. Her finnes det en rekke offisielle bilder fra Docker-utviklerteamet og etablerte åpen kildekode-prosjekter. Bilder som lastes opp til den private delen av registeret er ikke offentlig tilgjengelige og kan derfor deles, for eksempel innenfor et selskaps interne krets eller med venner eller bekjente. Docker Hub er tilgjengelig på hub.docker.com.

Docker-motoren

Kjernen i Docker-prosjektet er Docker-motoren. Dette er et åpen kildekode-program med klient-server-arkitektur, som i sin nåværende versjon er tilgjengelig for alle brukere på alle etablerte plattformer.

Docker-motorens grunnleggende arkitektur består av tre komponenter: En daemon med serverfunksjoner, et programmeringsgrensesnitt (API) basert på REST-paradigmet (Representational State Transfer) og operativsystemets terminal (kommandolinjegrensesnitt, CLI) som brukergrensesnitt (klient).

  • Docker-daemon: Som server for Docker-motoren benyttes en daemon-prosess. Docker-daemonen kjører i bakgrunnen på vertsystemet og brukes til sentral styring av Docker-motoren. Denne funksjonen oppretter og administrerer alle bilder, containere og nettverk.
  • REST-API: REST-API spesifiserer et sett med grensesnitt som gjør det mulig for andre programmer å kommunisere med Docker-daemonen og gi den instruksjoner. Et av disse programmene er operativsystemets terminal.
  • Terminal: Som klientprogram bruker Docker operativsystemets terminal. Dette, integrert med Docker-daemonen via REST-API, gjør det mulig for brukere å styre den gjennom skript eller brukerinngang.
Tip

I 2017 ble Docker-motoren omdøpt til Docker Community Edition (forkortet til Docker CE), men den offisielle dokumentasjonen og Docker-repositoriene bruker for det meste fortsatt det gamle navnet. I tillegg til Docker CE finnes det også Docker Enterprise Edition (Docker EE), som har noen premiumfunksjoner. Den er imidlertid ikke gratis og passer bedre for bedrifter.

Med Docker-kommandoer kan brukerens programvarekontainere startes, stoppes og administreres direkte fra terminalen. Daemonen adresseres via kommandoen docker og instruksjoner som build, pull eller run. Klient og server kan befinne seg på samme system. Brukere har også muligheten til å få tilgang til en Docker-daemon på et annet system. Avhengig av hvilken type tilkobling som opprettes, foregår kommunikasjonen mellom klienten og serveren via REST-API, via UNIX-sockets eller via et nettverksgrensesnitt.

Følgende figur illustrerer samspillet mellom de enkelte Docker-komponentene ved hjelp av eksempelkommandoene docker build, docker pull og docker run:

Image: Schematic representation of the Docker architecture
'The Docker architecture is based on the cooperation of the client (terminal'), server (Docker-demon) og register (Docker Hub).“

Kommandoen docker build gir Docker-demonen beskjed om å opprette et bilde (stiplet linje). For dette må en tilhørende Dockerfile være tilgjengelig. Hvis bildet ikke skal opprettes, men i stedet lastes inn fra et arkiv i Docker Hub, brukes kommandoen docker pull (strekket linje). Hvis Docker-daemonen får beskjed via docker run om å starte en container, sjekker bakgrunnsprogrammet om det tilhørende containerbildet er tilgjengelig lokalt. Hvis det er det, kjøres containeren (hel linje). Hvis daemonen ikke finner bildet, starter den automatisk en henting fra repositoriet.

Arbeide med Docker

Nå er det på tide å bli kjent med applikasjoner for containerplattformer. Hvis du ennå ikke har installert Docker-motoren, kan du gjøre det via Linux-terminalen. Du finner instruksjoner om hvordan du gjør dette i artikkelen vår med tittelen«Installer Docker på Ubuntu 22.04». Les videre for å lære hvordan du styrer Docker-motoren fra terminalen, hva Docker Hub kan tilby deg, og hvorfor Docker-containere kan revolusjonere måten du jobber med applikasjoner på.

Slik styrer du Docker-motoren

Siden versjon 16.04 har Ubuntu brukt bakgrunnsprogrammet systemd(forkortelse for «system daemon») til å administrere prosesser.Systemd eren init-prosess som også brukes i andre Linux-distribusjoner som RHEL, CentOS eller Fedora. Vanligvistildeles systemdprosess-ID 1. Som systemets første prosess har denne daemonen ansvaret for å starte, overvåke og avslutte alle påfølgende prosesser. I tidligere Ubuntu-versjoner (14.10 og eldre) var detbakgrunnsprogrammet upstart som hadde denne funksjonen.

Docker-demonen kan også styres via systemd. I standardinstallasjonen er containerplattformen konfigurert slik at demonen starter automatisk når systemet startes opp. Denne standardinnstillingen kan tilpasses via kommandolinjeverktøyet systemctl.

Med systemctl sender du kommandoer til systemd for å styre en prosess eller be om statusopplysninger. Syntaksen for en slik kommando er som følger:

systemctl [OPTION] [COMMAND]
bash

Noen kommandoer refererer til bestemte ressurser (for eksempel Docker). I systemd-terminologien kalles disse for enheter. I dette tilfellet består kommandoen av den aktuelle instruksjonen og navnet på enheten som skal adresseres.

Hvis du ønsker å aktivere (enable) eller deaktivere (disable) automatisk oppstart av Docker-demonen, bruker du kommandolinjeverktøyet systemctl med følgende kommandoer:

sudo systemctl enable docker
sudo systemctl disable docker
bash

Kommandolinjeverktøyet systemctl lar deg sjekke statusen til en enhet:

sudo systemctl status docker
bash

Hvis Docker-motoren på Ubuntu-systemet ditt er aktiv, bør utdataene i terminalen se ut som på skjermbildet nedenfor:

Image: The status query via systemctl shows: The Docker engine is active (running)
Status query via systemctl: The Docker Engine is active (running)

Hvis Docker-motoren din for øyeblikket er deaktivert, vil du få statusmeldingen «inaktiv (død)». I så fall må du starte Docker-demonen manuelt for å kunne kjøre containere.

Image: The status query via systemctl shows: The Docker engine is inactive (dead)
Status query via systemctl: The Docker engine is inactive (dead)

Hvis du ønsker å starte, stoppe eller starte Docker-motoren manuelt, kan du bruke systemd med en av følgende kommandoer.

For å starte den deaktiverte demonen, bruk systemctl sammen med kommandoen start:

sudo systemctl start docker
bash

Hvis Docker-demonen skal avsluttes, bruk i stedet kommandoen stop:

sudo systemctl stop docker
bash

Det blir bedt om å starte motoren på nytt med kommandoen restart:

sudo systemctl restart docker
bash

Slik bruker du Docker Hub

Hvis Docker-motoren utgjør hjertet i containerplattformen, er Docker Hub sjelen i dette åpen kildekode-prosjektet. Det er her fellesskapet samles. I det skybaserte registeret kan brukerne finne alt de trenger for å gi liv til sin Docker-installasjon.

Nettjenesten tilbyr en rekke offisielle arkiver med over 100 000 gratisapper. Brukerne har muligheten til å opprette et bildearkiv og dele det med arbeidsgrupper. I tillegg til den profesjonelle støtten fra utviklingsteamet, kan nybegynnere her finne kontaktflater til brukerfellesskapet. Det finnes et forum for brukerstøtte på GitHub.

Image: The Docker hub: Registration
Create your personal Docker ID for free by registering / Source: hub.docker.com

Registrering i Docker Hub

Det er gratis å registrere seg på Docker Hub. Brukere trenger bare en e-postadresse og den valgte Docker-ID-en. Denne fungerer senere som et personlig navnerom for repositorier og gir brukerne tilgang til alle Docker-tjenester. For øyeblikket inkluderer dette tilbudet Docker Cloud, Docker Store og utvalgte betaprogrammer i tillegg til Docker Hub. Det gjør det også mulig å bruke Docker-ID-en som pålogging for Docker Support Center, samt Docker Success Portal og Docker Forum.

Registreringsprosessen består av fem trinn:

  1. Velg din Docker-ID: Som første trinn i registreringen må du velge et brukernavn som senere vil bli brukt som din personlige Docker-ID.
  2. Skriv inn en e-postadresse: Skriv inn din nåværende e-postadresse. Merk at du må bekrefte registreringen din hos Docker Hub via e-post.
  3. Velg et passord: Velg et hemmelig passord.
  4. Send inn registreringen: Klikk på «Registrer deg» for å sende inn registreringen. Når dataene er fullstendig overført, vil Docker sende en lenke til den angitte innboksen din, slik at du kan bekrefte e-postadressen din.
  5. Bekreft e-postadressen din: Bekreft e-postadressen din ved å klikke på bekreftelseslenken.

Nettjenestene til Docker-prosjektet er tilgjengelige umiddelbart etter at du har registrert deg i nettleseren. Her kan du opprette repositorier og arbeidsgrupper, eller søke etter offentlige ressurser på Docker Hub ved hjelp av «Explore».

Image: Dashboard of the Docker hub
Select and set repositories and workgroups via the Docker hub dashboard / Source: hub.docker.com

Du kan også logge inn direkte i operativsystemets terminal ved å bruke kommandoen docker login. En detaljert beskrivelse av kommandoen finner du i Docker-dokumentasjonen.

I prinsippet er Docker Hub også tilgjengelig for de som ikke har en konto eller en Docker-ID. I dette tilfellet kan man imidlertid bare laste ned bilder fra offentlige arkiver. Det er ikke mulig å laste opp (push) egne bilder uten en Docker-ID.

Opprett repositorier i Docker Hub

Den gratis Docker Hub-kontoen inneholder ett privat arkiv og gir deg muligheten til å opprette et ubegrenset antall offentlige arkiver. Hvis du trenger flere private arkiver, kan du få tilgang til disse ved å oppgradere til en betalt versjon.

Gjør følgende for å opprette et arkiv:

  1. Velg et navnerom: Nylig opprettede repositorier blir automatisk tilordnet navnerommet til din Docker-ID. Du har også muligheten til å oppgi ID-en til en organisasjon du tilhører.
  2. Gi repositoriet et navn: Skriv inn et navn for det nyopprettede repositoriet.
  3. Legg til en beskrivelse: Legg til en kort beskrivelse av repositoriet ditt.
  4. Angi synlighet: Bestem om repositoriet skal være offentlig synlig (offentlig) eller bare tilgjengelig for deg eller organisasjonen din (privat).

Bekreft opplysningene dine ved å klikke på «Opprett».

Image: The Docker hub: Input screen for creating a repository
Your repositories are automatically created in the namespace of your Docker ID / Source: hub.docker.com

Opprett team og organisasjoner

Med Docker Hub tilbyr Docker en skybasert plattform der brukerdefinerte bilder administreres sentralt og enkelt kan deles med arbeidsgrupper. I Docker-terminologien kalles disse «organisasjoner». Akkurat som brukerkontoer tildeles organisasjoner unike ID-er som brukes til å dele og laste ned bilder. Rettigheter og roller innenfor en organisasjon kan tildeles via team. For eksempel har brukere som er tilordnet teamet «Eiere» rett til å opprette private eller offentlige repositorier og tildele tilgangsrettigheter.

Arbeidsgrupper kan også opprettes og administreres direkte via dashbordet. Du finner mer informasjon om organisasjoner og team i Docker-dokumentasjonen.

Arbeid med bilder og beholdere

Som det første kontaktpunktet for offisielle Docker-ressurser er Docker Hub utgangspunktet vårt for denne introduksjonen til håndtering av bilder og containere. Utviklerteamet har laget demobildet «whalesay», som vil danne grunnlaget for den følgende Docker-veiledningen.

Last ned Docker-bilder

Du finner «whalesay »-bildet ved å gå til Docker Hub-nettstedet og skrive inn «whalesay» i søkefeltet ved siden av Docker-logoen.

Image: The search function in Docker hub
Search the Docker hub using the search bar or the ‘Explore’ button / Source: hub.docker.com

I søkeresultatene klikker du på ressursen med tittelen docker/whalesay for å få tilgang til det offentlige arkivet for dette bildet.

Docker-arkiver er alltid bygget opp etter samme mønster. Øverst på siden finner brukerne navnet på bildet, arkivets kategori og tidspunktet for den siste opplastingen (siste push).

Image: Web view of a Docker repository
In the repository, users generally find all information that is needed to use an image / Source: hub.docker.com

Hvert Docker-repositorium inneholder også følgende informasjonsbokser:

  1. Beskrivelse: Detaljert beskrivelse, som vanligvis inneholder bruksanvisning
  2. Docker pull-kommando: Kommandolinjedirektiv som brukes til å laste ned bildet fra arkivet (pull)
  3. Eier: Informasjon om opphavsmannen til depotet
  4. Kommentarer: Kommentarfeltet nederst på siden

Informasjonsfeltene i arkivet viser at whalesay er en videreutvikling av det åpne kildekode-Perl-skriptet cowsay. Programmet, som ble utviklet av Tony Monroe i 1999, genererer en ASCII-grafikk i form av en ku, som vises sammen med en melding på brukerens terminal.

For å laste ned docker/whalesay, bruk kommandoen docker pull:

docker pull [OPTIONS] NAME [:TAG|@DIGEST]
bash

Kommandoen docker pull gir demonen beskjed om å laste inn et bilde fra arkivet. Du angir hvilket bilde det dreier seg om ved å skrive inn bildets navn (NAME). Du kan også gi Docker instruksjoner om hvordan den ønskede kommandoen skal utføres (OPTIONS). Valgfrie opplysninger inkluderer tagger (:TAG) og individuelle identifikasjonsnumre (@DIGEST), som gjør det mulig å laste ned en bestemt versjon av et bilde.

En lokal kopi av docker/whalesay-bildet hentes med følgende kommando:

docker pull docker/whalesay
bash

Vanligvis kan du hoppe over dette trinnet. Hvis du ønsker å starte en container, laster Docker-demonen automatisk ned bildene fra arkivet som den ikke finner på det lokale systemet.

Start Docker-bilder som containere

For å starte et Docker-bilde, bruk kommandoen docker run:

docker run [OPTIONS] IMAGE [:TAG|@DIGEST] [CMD] [ARG...]
bash

Den eneste obligatoriske delen av docker run er navnet på det ønskede Docker-bildet. Men når du starter en container, har du også muligheten til å angi ekstra alternativer, TAG-er og DIGEST-er. I tillegg kan docker run kombineres med andre kommandoer som kjøres så snart containeren starter. I dette tilfellet overskrives CMD (COMMAND, definert av bildeskaperen og utført automatisk når containeren startes). Andre valgfrie konfigurasjoner kan defineres gjennom tilleggsargumenter (ARG…). Dette gjør det for eksempel mulig å legge til brukere eller overføre miljøvariabler.

Bruk kommandolinjedirektivet

docker run docker/whalesay cowsay boo
bash

for å laste ned det eksisterende Perl-skriptet som et bilde og kjøre det i en container. Du vil se at whalesay skiller seg betydelig fra kildeskriptet.

Image: Terminal output of the container docker/whalesay: The whale says ‘boo’
If docker/whalesay is run with the standard command, the Docker whale is limited to a short ‘boo’

Hvis bildet docker/whalesay kjøres, viser skriptet en ASCII-grafikk i form av en hval samt tekstmeldingen «boo», som sendes med kommandoen cowsay i terminalen.

Akkurat som ved testkjøringen, søker daemonen først etter det ønskede bildet i den lokale filkatalogen. Siden det ikke finnes noen pakke med samme navn, startes en henting fra Docker-depotet. Deretter starter daemonen det modifiserte cowsay-programmet. Hvis dette har kjørt ferdig, avsluttes containeren automatisk.

I likhet med cowsay gir også Dockers whalesay muligheten til å gripe inn i programforløpet for å påvirke tekstutdataene i terminalen. Test denne funksjonen ved å erstatte «boo» i utdatakommandoen med en hvilken som helst streng eller med en dårlig hvalvits, for eksempel.

sudo docker run docker/whalesay cowsay What did the shark say to the whale? What are you blubbering about?
bash
Image: Terminal output of the container docker/whalesay: A whale with an individual message
Make your Docker whale say whatever you want by placing words in his speech bubble

Vis alle Docker-bilder på det lokale systemet

Hvis du ikke er sikker på om du allerede har lastet ned et bestemt bilde, kan du få en oversikt over alle bildene på din lokale datamaskin. Bruk følgende kommandolinjekommando:

sudo docker image
bash

Kommandoen docker images (alternativ docker image ls) viser alle lokale bilder, inkludert filstørrelse, tag og bilde-ID.

Image: Overview of all images on the local system
The overview displays the images hello-world and docker/whalesay

Når du starter en container, lastes det underliggende bildet ned som en kopi fra arkivet og lagres permanent på datamaskinen din. Dette sparer deg tid hvis du ønsker å hente frem bildet senere. En ny nedlasting startes bare hvis bildekilden endres, for eksempel hvis en nyere versjon er tilgjengelig i arkivet.

Vis alle beholdere på det lokale systemet

Hvis du vil få en oversikt over alle containere som kjører på systemet ditt eller som har kjørt tidligere, bruker du kommandolinjeparameteren docker ps sammen med alternativet --all (forkortet: -a):

sudo docker ps -a
bash
Image: Overview of all containers on the local system
The overview shows all containers that have been launched on the Docker engine

Terminalutdataene inneholder opplysninger som den aktuelle container-ID-en, det underliggende bildet, kommandoen som ble kjørt da containeren ble startet, tidspunktet da containeren ble startet og statusen.

Hvis du bare vil vise beholderne som for øyeblikket kjører på systemet ditt, bruker du kommandolinjedirektivet docker ps uten andre alternativer:

sudo docker ps
bash

For øyeblikket bør det imidlertid ikke være noen aktive containere på systemet ditt.

Opprett Docker-bilder

Som du sikkert vet, har vår Docker-veiledning vist deg hvordan du finner bilder i Docker Hub, laster dem ned og kjører dem på ethvert system der Docker-motoren er installert. Men med Docker får du ikke bare tilgang til det omfattende utvalget av apper som finnes i registret. Plattformen tilbyr også en rekke muligheter for å lage dine egne bilder og dele dem med andre utviklere.

I de innledende kapitlene i denne Docker-veiledningen har du allerede lært at hvert Docker-bilde er basert på en Dockerfile. Du kan tenke på Dockerfiles som en slags byggemal for bilder. Dette er enkle tekstfiler som inneholder alle instruksjonene Docker trenger for å opprette et bilde. I de følgende trinnene skal du lære hvordan du skriver en slik Dockerfile og gir Docker beskjed om å bruke denne som grunnlag for ditt eget bilde.

  1. Opprett ny mappe: Docker-utviklerteamet anbefaler å opprette en ny mappe for hver Dockerfile. Under Linux er det enkelt å opprette mapper i terminalen. Bruk følgende kommandolinje for å opprette en mappe med navnet mydockerbuild:
mkdir mydockerbuild
bash
Image: Ubuntu terminal: The command mkdir
Create new directories with the command mkdir
  1. Naviger i den nye katalogen: Bruk kommandoen cd for å navigere i den nyopprettede arbeidskatalogen.
cd mydockerbuild
bash
Image: Ubuntu terminal: The command cd
With the help of the cd command, switch to another working directory
  1. Opprett ny tekstfil: Du kan også enkelt opprette tekstfiler via terminalen i Ubuntu. Bruk et tekstredigeringsprogram som Nano eller Vim til dette. Opprett en tekstfil med navnet Dockerfile i katalogen mydockerbuild.
nano Dockerfile
bash
Image: Ubuntu terminal: Create text files with Nano
The text editor Nano is preinstalled on all Ubuntu versions
  1. Skriv Dockerfile: Den nyopprettede tekstfilen fungerer som en byggeplan for det bildet du skal utvikle selv. I stedet for å programmere bildet helt fra bunnen av, skal vi i denne Docker-veiledningen bruke demobildet docker/whalesay som mal. Dette integreres ved hjelp av kommandoen FROM i Dockerfile-filen din. Bruk taggen :latest for å henvise til den nyeste versjonen av bildet.
FROM docker/whalesay:latest

Så langt fungerer docker/whalesay ved at du selv legger inn ordene. I terminalen vises den eksakte teksten du har skrevet inn sammen med kommandoen for å starte containeren. Men det ville vært mer interessant om skriptet automatisk genererte ny tekst. Dette kan for eksempel gjøres ved å bruke programmet «fortunes», som finnes på alle Linux-systemer. Den grunnleggende funksjonen til fortunes er å generere ordtak fra lykkekaker og humoristiske aforismer. Bruk følgende kommando for å oppdatere din nåværende lokale pakkeindeks og installere fortunes:

RUN apt-get -y update && apt-get install -y fortunes

Definer deretter en CMD-setning. Denne utføres etter RUN-kommandoen, med mindre den er overskrevet av call (docker run image CMD). Bruk følgende kommando for å kjøre programmet fortunes med alternativet -a («Velg fra alle databaser») og vise utdataene via programmet cowsay i terminalen:

CMD /usr/games/fortune -a | cowsay

Dockerfilen din bør se slik ut:

FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

Merk: Kommandoer i en Dockerfile skrives alltid med enkelt linjeavstand og begynner alltid med et nøkkelord. Syntaksen er ikke skiftesensitiv, så det spiller ingen rolle om du skriver med store eller små bokstaver. Det er imidlertid fastsatt en ensartet bruk av store bokstaver for nøkkelordene.

Image: The text editor Nano in the Ubuntu terminal
Control the text editor Nano via the key combinations given in the footer
  1. Lagre tekstfil: Lagre oppføringen din. Hvis du bruker Nano-redigeringsprogrammet, lagrer du med tastkombinasjonen [CTRL] + [O] og bekrefter med [ENTER]. Nano viser en melding om at tre linjer er skrevet til den valgte filen. Lukk tekstredigeringsprogrammet med tastkombinasjonen [CTRL] + [X].
  2. Opprett bilde som Dockerfile: For å opprette et bilde fra en Dockerfile, naviger først til katalogen der tekstfilen ligger. Start opprettelsen av bildet med kommandolinjedirektivet docker build. Hvis du vil gi bildet et individuelt navn eller en tag, bruk alternativet -t etterfulgt av ønsket kombinasjon av etikett og tag. Standardformatet er name:tag.

I dette eksemplet skal det opprettes et bilde med navnet docker-whale:

docker build -t docker-whale .
bash

Den siste delen angir at den underliggende Dockerfilen finnes i den valgte katalogen. Du har også muligheten til å angi en filbane eller en URL for kildefilene.

Byggprosessen starter så snart kommandoen bekreftes med [ENTER]. Først sjekker Docker-demonen om den har alle filene den trenger for å opprette bildet. I Docker-terminologi kalles dette «kontekst».

Da finnes Docker-bildet «whalesay » med taggen :latest her:

Hvis den nødvendige konteksten for å opprette bildet allerede finnes i sin helhet, starter Docker-demonen bildet som er angitt via FROM i en midlertidig container og går videre til neste kommando i Dockerfile. I dette eksemplet er dette RUN-kommando en, som fører til at programmet fortunes blir installert.

Ved slutten av hvert trinn i prosessen med å lage et bilde tildeler Docker deg en ID for det tilhørende laget som opprettes i det aktuelle trinnet. Dette betyr at hver linje i den underliggende Dockerfilen tilsvarer et lag i bildet som bygges på grunnlag av den.

Når RUN-kommandoen er fullført, stopper Docker-demonen containeren som ble opprettet for den, sletter den og starter en ny midlertidig container for laget i CMD-uttrykket. Ved slutten av opprettelsesprosessen avsluttes også denne midlertidige containeren og slettes. Docker gir deg ID-en til det nye bildet:

Successfully built a8f2048c9ab8
Image: Ubuntu terminal: Status message during image creation
Docker images are created in multiple layers

Det nyopprettede bildet ditt finner du under navnet docker-whale i oversikten over bildene du har lagret lokalt.

sudo docker images
bash
Image: Ubuntu terminal: Overview of all images
The newly created image in the image overview

For å starte en container fra det nyopprettede bildet, bruker du kommandolinjen sudo docker run sammen med navnet på bildet:

sudo docker run docker-whale
bash

Hvis bildet ble opprettet riktig fra Dockerfile, bør hvalen din nå inspirere deg med mer eller mindre kloke ord. Merk: Hver gang du starter containeren på nytt, genereres det en ny setning.

Image: Container based on docker-whale: Text output in the terminal
Thanks to fortunes, the ASCII whale now provides witty or wise phrases

Merk Docker-bilder og last dem opp til Docker Hub

Hvis du vil laste opp ditt eget «docker-whale »-bilde til hubben og gjøre det tilgjengelig for enten fellesskapet eller en arbeidsgruppe, må du først knytte det til et arkiv med samme navn i ditt eget personlige navnerom. I Docker-terminologien kalles dette trinnet «tagging».

Gjør følgende for å publisere et bilde på Docker Hub:

  1. Opprett et arkiv: Logg inn på Docker Hub med Docker-ID-en din og ditt personlige passord, og opprett et offentlig arkiv med navnet docker-whale.
Image: The Docker hub: Entry form for creating a repository
Create a repository for your custom image / Source: hub.docker.com
  1. Finn bilde-ID-en: Finn ID-en til det tilpassede bildet «docker-whale» ved hjelp av kommandolinjeparameteren docker images.
Image: Overview of all local images in the Ubuntu terminal
The command docker images lists all images that are saved on your system

I vårt tilfelle er bilde-ID-en a8f2048c9ab8. Vi trenger denne til merking i neste trinn.

  1. Merk bildet: Merk «docker-whale »-bildet ved hjelp av kommandolinjeprogrammet docker tag i henhold til følgende:
sudo docker tag [Image-ID][Docker-ID]/[Image-Name]:[TAG]
bash

I dette eksemplet lyder kommandolinjedirektivet for tagging slik:

sudo docker tag a8f2048c9ab8 [Namespace]/docker-whale:latest
bash

Du kan sjekke om du har merket bildet riktig ved å bruke oversikten docker images. Navnet på repositoriet skal nå inneholde Docker-ID-en din.

Image: Ubuntu terminal: Image overview before and after tagging
Link images with your Docker ID using the command docker tag
  1. Last opp bildet: For å laste opp bildet må du først logge inn på Docker Hub. Dette gjøres ved hjelp av kommandoen docker login.
sudo docker login
bash

Terminalen ber deg deretter om å oppgi brukernavn (Docker-ID) og passord.

Image: Log in to the Docker hub via the Ubuntu terminal
Before you can upload an image to the Docker hub, you first need to log in

Hvis påloggingen lyktes, bruker du kommandolinjeparameteren docker push for å laste opp bildet ditt til det nyopprettede arkivet.

sudo docker push [Namespace]/docker-whale
bash

Opplastingsprosessen bør bare ta noen sekunder. Den aktuelle statusen vises i terminalen.

Image: Ubuntu terminal: Status message of the image upload
After uploading, the image is available under the set tag latest in the Docker hub

Logg inn på Docker Hub via nettleseren for å se det opplastede bildet.

Image: Docker hub: The repository [Namespace]/docker-whale in the detailed view
The latest update of your repository is shown in the detailed view / Source: hub.docker.com

Hvis du vil laste opp flere bilder per arkiv, kan du bruke forskjellige tagger for å tilby bildene i ulike versjoner. For eksempel:

[Namespace]/docker-whale:latest
[Namespace]/docker-whale:version1
[Namespace]/docker-whale:version2

En oversikt over de ulike bildeversjonene finner du i Docker Hub-arkivet under fanen «Tags».

Image: Docker hub: The ‘Tags’ tab
In the ‘Tags’ tab, you’ll find all versions of an image / Source: hub.docker.com

Bilder fra ulike prosjekter bør imidlertid legges ut i egne arkiver.

Hvis opplastingen lyktes, vil det tilpassede bildet ditt nå være tilgjengelig i det offentlige arkivet for alle Docker-brukere over hele verden.

  1. Test: Sjekk om opplastingen har lyktes ved å prøve å laste ned bildet.

Merk at den lokale versjonen av bildet må slettes først for å kunne laste ned en ny kopi med samme tag. Ellers vil Docker melde at det ønskede bildet allerede finnes i den nåværende versjonen.

Image: The Image is up to date
If an image exists locally, the pull command is cancelled

For å slette det lokale Docker-bildet, bruk kommandolinjedirektivet docker rmi sammen med den tilhørende bilde-ID-en. Denne finner du som vanlig via docker images. Hvis Docker melder om en konflikt, for eksempel fordi en bilde-ID brukes i flere repositorier eller i en container, må du gjenta kommandoen med alternativet --force (forkortet*-f* ) for å tvinge gjennom slettingen.

sudo docker rmi -f a8f2048c9ab8
bash
Image: Command docker rmi in combination with the option -f (force)
Use the command docker rmi in combination with the option -f to force a deletion

Vis oversikten over alle lokale bilder på nytt:

sudo docker Images
bash

De slettede elementene skal ikke lenger vises i terminalutdataene. Bruk nå «pull»-kommandoen som er angitt i repositoriet for å laste ned en ny kopi av bildet fra Docker Hub.

sudo docker pull [Namespace]/docker-whale
bash
Image: Ubuntu terminal: Download from the Docker hub
The previously published image is successfully downloaded

Flere Docker-emner og veiledninger

Docker-universet er stort, og over tid har det utviklet seg et levende økosystem rundt Docker-verktøyene. Docker er spesielt nyttig for administratorer, særlig hvis de driver komplekse applikasjoner med flere containere parallelt på ulike systemer. Docker tilbyr en rekke funksjoner for orkestrering av slike klynger. Du finner mer informasjon om dette i vår artikkel om Docker-orkestrering med Swarm og Compose.

Den digitale veiledningen inneholder flere opplæringsvideoer om hvordan du bruker Docker:

  • Opprette et Docker-repositorium
  • Docker-containervolum
  • Docker: Sikkerhetskopiering og gjenoppretting
  • Installere og kjøre Docker på en Linux-server
  • Veiledning i Docker Compose

Docker egner seg for ulike bruksområder. Du finner følgende veiledninger i den digitale veiledningen:

Docker er ikke alltid det beste valget for alle applikasjoner. I en av artiklene våre tar vi for oss de mest populære alternativene til Docker. I tillegg har vi mange artikler som sammenligner Docker med andre plattformer:

  • Kubernetes vs. Docker
  • Openshift vs. Docker
  • Podman vs. Docker
Go to Main Menu