# Docker-veiledning for nybegynnere

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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/f/9/csm_virtual-machines-compared-to-docker-containers_1216df397f.webp "Virtual machines and software containers in comparison")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Schaubilder/virtual-machines-compared-to-docker-containers.png) 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.

Tip Docker-containere og -bilder er for det meste generiske, men kan tilpasses i stor grad etter behov. Du kan lese mer om dette i artikkelen vår om Docker-containere.

### 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*](https://hub.docker.com/ "Docker Hub website").

### 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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/e/1/csm_docker-architecture-schematic_0cb6890f75.webp "Schematic representation of the Docker architecture")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Schaubilder/docker-architecture-schematic.png) '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å.

Tip Hvis du ønsker å installere Docker på en annen Linux-distribusjon eller på Windows, kan følgende instruksjoner være til hjelp:

- Installer Docker på Debian 11
- Installer Docker på Ubuntu 20.04
- Installer Docker på CentOS 7
- Installer Docker på Windows 10
- Installer Docker på Windows 11
- Installer Docker på Raspberry Pi

### Slik styrer du Docker-motoren

Siden versjon 16.04 har Ubuntu brukt **bakgrunnsprogrammet *systemd***(forkortelse for «system daemon») til å administrere prosesser.*Systemd er*en init-prosess som også brukes i andre Linux-distribusjoner som RHEL, CentOS eller Fedora. Vanligvis*tildeles systemd*prosess-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 det*bakgrunnsprogrammet 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:

```bash
systemctl [OPTION] [COMMAND]
```

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:

```bash
sudo systemctl enable docker
sudo systemctl disable docker
```

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

```bash
sudo systemctl status docker
```

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)](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/f/7/csm_docker-status-active-running_f52601bd11.webp "The status query via systemctl shows: The Docker engine is active (running)")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-status-active-running.png) 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)](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/d/a/csm_docker-status-inactive_cad5668ee9.webp "The status query via systemctl shows: The Docker engine is inactive (dead)")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-status-inactive.png) 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`:

```bash
sudo systemctl start docker
```

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

```bash
sudo systemctl stop docker
```

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

```bash
sudo systemctl restart docker
```

### 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**](https://github.com/docker/hub-feedback/issues "Docker’s GitHub website").

[![Image: The Docker hub: Registration](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/a/0/csm_docker-hub-login-page_d232488fe7.webp "The Docker hub: Registration")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-login-page.png) 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](https://www.docker.com/community/ "Docker Community 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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/f/a/csm_docker-hub-dashboard_1d08a8d15d.webp "Dashboard of the Docker hub")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-dashboard.png) 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](https://docs.docker.com/engine/reference/commandline/login/ "Docker documentation").

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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/a/d/csm_docker-hub-repository-creation_ac7984ce9d.webp "The Docker hub: Input screen for creating a repository")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-repository-creation.png) 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](https://docs.docker.com/docker-hub/orgs/ "Workgroups - Docker documentation").

### 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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/c/c/csm_docker-hub-whalesay-repos_eae5c60dab.webp "The search function in Docker hub")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-whalesay-repos.png) 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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/3/e/csm_docker-hub-official-whalesay-repo_2355257104.webp "Web view of a Docker repository")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-official-whalesay-repo.png) 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`:

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

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:

```bash
docker pull docker/whalesay
```

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`:

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

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

```bash
docker run docker/whalesay cowsay boo
```

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’](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/e/4/csm_docker-run-whalesay-boo-english_82f28f20b7.webp "Terminal output of the container docker/whalesay: The whale says ‘boo’")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-run-whalesay-boo-english.png) 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.

```bash
sudo docker run docker/whalesay cowsay What did the shark say to the whale? What are you blubbering about?
```

[![Image: Terminal output of the container docker/whalesay: A whale with an individual message](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/8/6/csm_docker-run-whalesay-joke_6337d3f36a.webp "Terminal output of the container docker/whalesay: A whale with an individual message")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-run-whalesay-joke.png) 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:

```bash
sudo docker image
```

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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/3/9/csm_sudo-docker-images-empty_9806635619.webp "Overview of all images on the local system")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-images-empty.png) 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`):

```bash
sudo docker ps -a
```

[![Image: Overview of all containers on the local system](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/5/a/csm_sudo-docker-ps-a-english_74f680383e.webp "Overview of all containers on the local system")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-ps-a-english.png) 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:

```bash
sudo docker ps
```

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*:

```bash
mkdir mydockerbuild
```

[![Image: Ubuntu terminal: The command mkdir](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/4/8/csm_mkdir-mydockerbuild-english_b8f27a8820.webp "Ubuntu terminal: The command mkdir")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/mkdir-mydockerbuild-english.png) Create new directories with the command mkdir 2. **Naviger i den nye katalogen**: Bruk kommandoen `cd` for å navigere i den nyopprettede arbeidskatalogen.

```bash
cd mydockerbuild
```

[![Image: Ubuntu terminal: The command cd](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/6/d/csm_cd-mydockerbuild-english_93ecadd291.webp "Ubuntu terminal: The command cd")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/cd-mydockerbuild-english.png) With the help of the cd command, switch to another working directory 3. **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*.

```bash
nano Dockerfile
```

[![Image: Ubuntu terminal: Create text files with Nano](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/2/4/csm_nano-dockerfile-empty_b2b1b6195b.webp "Ubuntu terminal: Create text files with Nano")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/nano-dockerfile-empty.png) The text editor Nano is preinstalled on all Ubuntu versions 4. **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.

```none
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*:

```none
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:

```none
CMD /usr/games/fortune -a | cowsay
```

Dockerfilen din bør se slik ut:

```none
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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/b/b/csm_nano-dockerfile-full_bd1796f06d.webp "The text editor Nano in the Ubuntu terminal")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/nano-dockerfile-full.png) 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*:

```bash
docker build -t docker-whale .
```

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:

```none
Successfully built a8f2048c9ab8
```

[![Image: Ubuntu terminal: Status message during image creation](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/f/6/csm_sudo-docker-build-whale-english_d6b1eb3cf7.webp "Ubuntu terminal: Status message during image creation")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-build-whale-english.png) 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.

```bash
sudo docker images
```

[![Image: Ubuntu terminal: Overview of all images](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/3/9/csm_docker-images-new-docker-whale_4a46337253.webp "Ubuntu terminal: Overview of all images")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-images-new-docker-whale.png) 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:

```bash
sudo docker run docker-whale
```

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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/1/1/csm_sudo-run-docker-whale-fortunes-english_3bfb9d5385.webp "Container based on docker-whale: Text output in the terminal")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-run-docker-whale-fortunes-english.png) Thanks to fortunes, the ASCII whale now provides witty or wise phrases  Tip Du kan lære mer om hvordan du lager Docker-bilder i vår egen artikkel om emnet.

#### 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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/3/3/csm_docker-hub-create-docker-whale-repo_1266f7d9ea.webp "The Docker hub: Entry form for creating a repository")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-create-docker-whale-repo.png) Create a repository for your custom image / Source: hub.docker.com 2. **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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/5/a/csm_sudo-docker-images-id-english_265f2f9d16.webp "Overview of all local images in the Ubuntu terminal")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-images-id-english.png) 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.

3. **Merk bildet**: Merk *«docker-whale* »-bildet ved hjelp av kommandolinjeprogrammet `docker tag` i henhold til følgende:

```bash
sudo docker tag [Image-ID][Docker-ID]/[Image-Name]:[TAG]
```

I dette eksemplet lyder kommandolinjedirektivet for tagging slik:

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

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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/6/e/csm_sudo-docker-tag-docker-whale-english_d2345804e2.webp "Ubuntu terminal: Image overview before and after tagging")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-tag-docker-whale-english.png) Link images with your Docker ID using the command docker tag 4. **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`.

```bash
sudo docker login
```

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

[![Image: Log in to the Docker hub via the Ubuntu terminal](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/3/3/csm_sudo-docker-login-english_77fe04ede0.webp "Log in to the Docker hub via the Ubuntu terminal")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-login-english.png) 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.

```bash
sudo docker push [Namespace]/docker-whale
```

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

[![Image: Ubuntu terminal: Status message of the image upload](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/c/a/csm_sudo-docker-push-whale-english_44b31ef5fd.webp "Ubuntu terminal: Status message of the image upload")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-push-whale-english.png) 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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/5/e/csm_docker-hub-push-result_56530d8ebc.webp "Docker hub: The repository [Namespace]/docker-whale in the detailed view")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-push-result.png) 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:

```none
[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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/3/9/csm_docker-hub-multiple-versions-tags_e6c43a478d.webp "Docker hub: The ‘Tags’ tab")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/docker-hub-multiple-versions-tags.png) 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](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/f/0/csm_sudo-docker-pull-docker-whale-english_84e2e758c4.webp "The Image is up to date")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-pull-docker-whale-english.png) 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**.

```bash
sudo docker rmi -f a8f2048c9ab8
```

[![Image: Command docker rmi in combination with the option -f (force)](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/b/f/csm_sudo-docker-rmi-remove-image_75b679b119.webp "Command docker rmi in combination with the option -f (force)")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-rmi-remove-image.png) Use the command docker rmi in combination with the option -f to force a deletion Vis oversikten over alle lokale bilder på nytt:

```bash
sudo docker Images
```

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.

```bash
sudo docker pull [Namespace]/docker-whale
```

[![Image: Ubuntu terminal: Download from the Docker hub](https://www.ionos.com/nb-no/digitalguide/fileadmin/_processed_/4/8/csm_sudo-docker-pull-image-redownload_3dfb6af27f.webp "Ubuntu terminal: Download from the Docker hub")](https://www.ionos.com/nb-no/digitalguide/fileadmin/DigitalGuide/Screenshots_2023/sudo-docker-pull-image-redownload.png) The previously published image is successfully downloaded ## Flere Docker-emner og veiledninger

Docker-universet er stort, og over tid [har det utviklet seg](https://www.ionos.com/nb-no/digitalguide/server/kunnskap/docker-verktoey-oekosystemet-rundt-containerplattformen/) et levende [økosystem rundt Docker-verktøyene](https://www.ionos.com/nb-no/digitalguide/server/kunnskap/docker-verktoey-oekosystemet-rundt-containerplattformen/). 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:

- [Implementering av WordPress i Docker-containere](https://www.ionos.com/nb-no/digitalguide/server/kunnskap/wordpress-i-docker-containere/)
- Kjør et VPN i en Docker-container ved hjelp av SoftEther
- Nextcloud-installasjon med Docker
- Installer Portainer under Docker
- Redis i Docker-containere
- Valheim Docker-server

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](https://www.ionos.com/nb-no/digitalguide/server/kunnskap/oversikt-over-alternativer-til-docker/). I tillegg har vi mange artikler som sammenligner Docker med andre plattformer:

- Kubernetes vs. Docker
- Openshift vs. Docker
- Podman vs. Docker


This is a markdown version of: [https://www.ionos.com/nb-no/digitalguide/server/konfigurasjon/docker-veiledning-installasjon-og-foerste-skritt/](https://www.ionos.com/nb-no/digitalguide/server/konfigurasjon/docker-veiledning-installasjon-og-foerste-skritt/) for AI/LLM consumption.