I vår Docker-handledning introducerar vi dig till virtualiseringsplattformen Docker och visar dig hur du använder Docker på ditt Ubuntu 22.04-system med hjälp av lättförståeliga instruktioner.

Dockers struktur och funktioner

”Bygg, leverera och kör vilken app som helst, var som helst” – det är Dockers motto. Den öppna källkodsplattformen erbjuder ett flexibelt alternativ som kräver få resurser för emulering av hårdvarukomponenter baserade på virtuella maskiner (VM).

Medan traditionell hårdvaruvirtualisering baseras på att starta flera gästsystem på ett gemensamt värdsystem, körs Docker-applikationer som isolerade processer på samma system med hjälp av containrar. Detta kallas containerbaserad virtualisering, även kallad virtualisering på operativsystemnivå.

Bild: 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 fördel med containerbaserad virtualisering är att applikationer med olika krav kan köras isolerat från varandra utan att det krävs ett separat gästsystem. Dessutom kan applikationer med containrar distribueras över plattformar och i olika infrastrukturer utan att behöva anpassas till värdsystemets hårdvaru- eller mjukvarukonfigurationer.

Docker är det mest populära mjukvaruprojektet som förser användare med containerbaserad virtualiseringsteknik. Den öppna källkodsplattformen bygger på tre grundläggande komponenter. För att kunna köra containrar behöver användarna endast Docker-motorn samt speciella Docker-bilder, som kan hämtas via Docker Hub eller skapas av användarna själva.

Docker-bilder

I likhet med virtuella maskiner baseras Docker-containrar på Docker-bilder. En bild är en skrivskyddad mall som innehåller alla instruktioner som Docker-motorn behöver för att skapa en container. En Docker-bild beskrivs som en portabel bild av en container i form av en textfil, även kallad Dockerfile. Om en container ska startas på ett system laddas först ett paket med respektive bild, så länge den inte finns lokalt. Den laddade bilden tillhandahåller det nödvändiga filsystemet inklusive alla parametrar för körtiden. En container kan ses som en körande process av en bild.

Docker Hub

Docker Hub är ett molnbaserat register för programvarurepositorier, en typ av bibliotek för Docker-bilder. Onlinetjänsten är uppdelad i en offentlig och en privat del. Den offentliga delen erbjuder användarna möjlighet att ladda upp sina egna utvecklade bilder och dela dem med communityn. Här finns ett antal officiella bilder tillgängliga från Docker-utvecklarteamet och etablerade open source-projekt. Bilder som laddas upp till den privata delen av registret är inte tillgängliga för allmänheten och kan därför delas, till exempel inom ett företags interna krets eller med vänner eller bekanta. Docker Hub kan nås på hub.docker.com.

Docker-motorn

Kärnan i Docker-projektet är Docker-motorn. Det är en öppen källkodsapplikation för klientservrar som är tillgänglig för alla användare i den aktuella versionen på alla etablerade plattformar.

Docker-motorns grundläggande arkitektur är uppdelad i tre komponenter: en daemon med serverfunktioner, ett programmeringsgränssnitt (API) baserat på programmeringsparadigmet REST (Representational State Transfer) och operativsystemets terminal (kommandoradsgränssnitt, CLI) som användargränssnitt (klient).

  • Docker-daemon: Som server för Docker-motorn används en daemon-process. Docker-daemon körs i bakgrunden på värdsystemet och används för central styrning av Docker-motorn. Denna funktion skapar och hanterar alla bilder, containrar eller nätverk.
  • REST-API: REST-API specificerar en uppsättning gränssnitt som gör det möjligt för andra program att kommunicera med Docker-daemon och ge den instruktioner. Ett av dessa program är operativsystemets terminal.
  • Terminal: Som klientprogram använder Docker operativsystemets terminal. Denna är integrerad med Docker-daemonen via REST-API, vilket gör det möjligt för användare att styra den via skript eller användarinmatning.
Tips

2017 bytte Docker-motorn namn till Docker Community Edition (förkortat Docker CE), men den officiella dokumentationen och Docker-arkiven använder fortfarande mestadels det gamla namnet. Förutom Docker CE finns även Docker Enterprise Edition (Docker EE), som har vissa premiumfunktioner. Den är dock inte gratis och passar bättre för företag.

Med Docker-kommandon kan användarprogramvarucontainrar startas, stoppas och hanteras direkt från terminalen. Daemon adresseras via kommandot docker och instruktioner som build, pull eller run. Klient och server kan finnas på samma system. Användarna har också möjlighet att komma åt en Docker-daemon på ett annat system. Beroende på vilken typ av anslutning som upprättas sker kommunikationen mellan klienten och servern via REST-API, via UNIX-socklar eller via ett nätverksgränssnitt.

Följande bild illustrerar samspelet mellan de enskilda Docker-komponenterna med exempelkommandona docker build, docker pull och docker run:

Bild: Schematic representation of the Docker architecture
'The Docker architecture is based on the cooperation of the client (terminal'), server (Docker-daemon) och register (Docker hub).”

Kommandot docker build instruerar Docker-daemonen att skapa en bild (prickad linje). För detta måste en motsvarande Dockerfile finnas tillgänglig. Om bilden inte ska skapas, utan istället laddas från ett arkiv i Docker Hub, används kommandot docker pull (streckad linje). Om Docker-daemonen instrueras via docker run att starta en container, kontrollerar bakgrundsprogrammet om motsvarande containerbild finns tillgänglig lokalt. Om så är fallet körs containern (heldragen linje). Om daemonen inte kan hitta bilden initierar den automatiskt en hämtning från arkivet.

Arbeta med Docker

Nu är det dags att bekanta sig med containerplattformens applikationer. Om du ännu inte har installerat Docker-motorn kan du göra det via Linux-terminalen. Du hittar instruktioner om hur du gör detta i vår artikel med titeln”Installera Docker på Ubuntu 22.04”. Lär dig nedan hur du styr Docker-motorn från terminalen, vad Docker Hub kan göra för dig och varför Docker-containrar kan revolutionera ditt sätt att arbeta med applikationer.

Hur man styr Docker-motorn

Sedan version 16.04 har Ubuntu använt bakgrundsprogrammet systemd(förkortning för ”system daemon”) för att hantera processer.Systemd ären init-process som även används i andra Linux-distributioner som RHEL, CentOS och Fedora. Vanligtvisfår systemdprocess-ID 1. Som systemets första process ansvarar daemon för att starta, övervaka och avsluta alla efterföljande processer. I tidigare Ubuntu-versioner (14.10 och äldre) övertar bakgrundsprogrammetupstart denna funktion.

Docker-daemonen kan också styras via systemd. I standardinstallationen är containerplattformen konfigurerad så att daemonen startar automatiskt när systemet startas upp. Denna standardinställning kan anpassas via kommandoradsverktyget systemctl.

Med systemctl skickar du kommandon till systemd för att styra en process eller begära dess status. Syntaxen för ett sådant kommando är följande:

systemctl [OPTION] [COMMAND]
bash

Vissa kommandon hänvisar till specifika resurser (till exempel Docker). I systemd-terminologin kallas dessa för enheter. I detta fall är kommandot resultatet av respektive instruktion och namnet på den enhet som ska adresseras.

Om du vill aktivera autostart av Docker-daemonen (aktivera) eller inaktivera den (inaktivera), använd kommandoradsverktyget systemctl med följande kommandon:

sudo systemctl enable docker
sudo systemctl disable docker
bash

Med kommandoradsverktyget systemctl kan du fråga efter status för en enhet:

sudo systemctl status docker
bash

Om Docker-motorn på ditt Ubuntu-system är aktiv bör utdata i terminalen se ut som på följande skärmdump:

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

Om din Docker-motor för närvarande är inaktiverad kommer du att få statusdeklarationen inaktiv (död). I detta fall måste du starta Docker-daemonen manuellt för att köra containrar.

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

Om du vill starta, stoppa eller starta om din Docker-motor manuellt, använd systemd med något av följande kommandon.

För att starta den inaktiverade daemonen, använd systemctl i kombination med kommandot start:

sudo systemctl start docker
bash

Om Docker-daemonen ska avslutas, använd istället kommandot stop:

sudo systemctl stop docker
bash

En omstart av motorn begärs med kommandot restart:

sudo systemctl restart docker
bash

Hur man använder Docker Hub

Om Docker-motorn utgör hjärtat i containerplattformen, så är Docker Hub själen i open source-projektet. Det är här communityn möts. I det molnbaserade registret kan användarna hitta allt de behöver för att blåsa liv i sin Docker-installation.

Onlinetjänsten erbjuder olika officiella arkiv med mer än 100 000 gratisappar. Användarna har möjlighet att skapa ett bildarkiv och använda dem gemensamt med arbetsgrupper. Förutom det professionella stödet som utvecklingsgruppen erbjuder kan nybörjare här hitta kontakter till användargemenskapen. Ett forum för gemenskapsstöd finns tillgängligt på GitHub.

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

Registrering i Docker Hub

Registrering i Docker Hub är gratis. Användarna behöver bara en e-postadress och ett valfritt Docker-ID. Detta fungerar senare som ett personligt namnområde för arkivet och ger användarna tillgång till alla Docker-tjänster. För närvarande omfattar detta erbjudande Docker Cloud, Docker Store och utvalda betaprogram utöver Docker Hub. Det gör det också möjligt att använda Docker-ID:t för inloggning på Docker Support Center, Docker Success Portal och Docker Forum.

Registreringsprocessen består av fem steg:

  1. Välj ditt Docker-ID: Som första steg i ansökan väljer du ett användarnamn som senare kommer att användas som ditt personliga Docker-ID.
  2. Ange en e-postadress: Ange din aktuella e-postadress. Observera att du måste bekräfta din registrering hos Docker Hub via e-post.
  3. Välj ett lösenord: Välj ett hemligt lösenord.
  4. Skicka in din registrering: Klicka på “Registrera dig” för att skicka in din registrering. När uppgifterna har överförts kommer Docker att skicka en länk till din angivna inkorg så att du kan verifiera din e-postadress.
  5. Bekräfta din e-postadress: Bekräfta din e-postadress genom att klicka på verifieringslänken.

Docker-projektets onlinetjänster är tillgängliga direkt efter att du registrerat dig i webbläsaren. Här kan du skapa arkiv och arbetsgrupper eller söka efter offentliga resurser i Docker Hub med hjälp av funktionen ”Explore”.

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

Du kan också registrera dig direkt på operativsystemets terminal via docker login. En detaljerad beskrivning av kommandot finns i Docker-dokumentationen.

I princip är Docker Hub även tillgängligt för dem som inte har ett konto eller Docker-ID. I detta fall kan dock endast bilder från offentliga arkiv laddas. Det är inte möjligt att ladda upp (push) egna bilder utan ett Docker-ID.

Skapa arkiv i Docker Hub

Det kostnadsfria Docker Hub-kontot innehåller ett privat arkiv och erbjuder möjligheten att skapa ett obegränsat antal offentliga arkiv. Om du behöver fler privata arkiv kan du låsa upp dessa med en betald uppgradering.

För att skapa ett arkiv, gör så här:

  1. Välj ett namnområde: Nyskapade arkiv tilldelas automatiskt namnområdet för ditt Docker-ID. Du har också möjlighet att ange ID för en organisation som du tillhör.
  2. Namnge arkivet: Ange ett namn för det nyskapade arkivet.
  3. Lägg till en beskrivning: Lägg till en kort beskrivning av ditt arkiv.
  4. Ställ in synlighet: Bestäm om arkivet ska vara offentligt synligt (offentligt) eller endast tillgängligt för dig eller din organisation (privat).

Bekräfta dina inmatningar genom att klicka på “Skapa”.

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

Skapa team och organisationer

Med hubben tillhandahåller Docker en molnbaserad plattform där självskapade bilder hanteras centralt och enkelt delas med arbetsgrupper. I Dockers terminologi kallas dessa för organisationer. Precis som användarkonton får organisationer individuella ID-nummer via vilka bilder kan tillhandahållas och laddas ned. Rättigheter och roller inom en organisation kan tilldelas via team. Användare som tilldelats teamet ”Ägare” har till exempel behörighet att skapa privata eller offentliga arkiv och tilldela åtkomsträttigheter.

Arbetsgrupper kan också skapas och hanteras direkt via instrumentpanelen. Mer information om organisationer och team finns i Docker-dokumentationen.

Arbeta med bilder och behållare

Som den första kontaktpunkten för officiella Docker-resurser är Docker Hub vår utgångspunkt för denna introduktion till hantering av bilder och containrar. Utvecklarteamet har tillhandahållit demobilden whalesay, som kommer att fungera som grund för följande Docker-handledning.

Ladda ner Docker-bilder

Whalesay-bilden hittar du när du besöker Docker Hubs webbplats och skriver in termen whalesay i sökfältet bredvid Docker-logotypen.

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

I sökresultaten klickar du på resursen med titeln docker/whalesay för att komma åt det offentliga arkivet för den här bilden.

Docker-arkiv byggs alltid enligt samma mönster. I sidans rubrik hittar användarna bildens titel, arkivets kategori och tidpunkten för den senaste uppladdningen (senaste push).

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

Varje Docker-arkiv erbjuder också följande informationsrutor:

  1. Beskrivning: Detaljerad beskrivning, vanligtvis inklusive användningsanvisningar
  2. Docker pull-kommando: Kommandoradsdirektiv som används för att ladda ner bilden från arkivet (pull)
  3. Ägare: Information om skaparen av arkivet
  4. Kommentarer: Kommentaravsnitt i slutet av sidan

Informationsrutorna i arkivet visar att whalesay är en modifiering av det öppna källkodsprogrammet cowsay i Perl. Programmet, som utvecklades av Tony Monroe 1999, genererar en ASCII-grafik i form av en ko, som visas tillsammans med ett meddelande i användarens terminal.

För att ladda ner docker/whalesay, använd kommandot docker pull:

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

Kommandot docker pull instruerar daemon att ladda en bild från arkivet. Du anger vilken bild det är genom att ange bildens titel (NAME). Du kan också instruera Docker om hur det önskade kommandot ska utföras (OPTIONS). Valfria inmatningar inkluderar taggar (:TAG) och individuella identifikationsnummer (@DIGEST), som gör att du kan ladda ner en specifik version av en bild.

En lokal kopia av docker/whalesay -bilden erhålls med följande kommando:

docker pull docker/whalesay
bash

I allmänhet kan du hoppa över detta steg. Om du vill starta en container hämtar Docker-daemonen automatiskt bilderna från arkivet som den inte kan hitta på det lokala systemet.

Starta Docker-bilder som containrar

För att starta en Docker-bild använder du kommandot docker run:

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

Den enda obligatoriska delen av kommandot docker run är namnet på den önskade Docker-bilden. Men när du startar en container har du också möjlighet att definiera extra alternativ, TAG:ar och DIGEST:ar. Dessutom kan kommandot docker run kombineras med andra kommandon som körs så snart containern startar. I detta fall skrivs CMD (COMMAND, definierat av bildskaparen och exekverat automatiskt när containern startas) över. Andra valfria konfigurationer kan definieras genom ytterligare argument (ARG…). Detta gör det möjligt att till exempel lägga till användare eller överföra miljövariabler.

Använd kommandoradsdirektivet

docker run docker/whalesay cowsay boo
bash

för att ladda ner det befintliga Perl-skriptet som en bild och köra det i en container. Du kommer att se att whalesay skiljer sig avsevärt från källskriptet.

Bild: 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’

Om bilden docker/whalesay körs, visar skriptet en ASCII-grafik i form av en val samt textmeddelandet ”boo”, som skickas med kommandot cowsay i terminalen.

Precis som vid testkörningen söker daemon först efter den önskade bilden i den lokala filkatalogen. Eftersom det inte finns något paket med samma namn initieras en hämtning från Docker-arkivet. Därefter startar daemon det modifierade cowsay-programmet. Om detta har körts klart avslutas containern automatiskt.

Precis som cowsay erbjuder även Dockers whalesay möjligheten att ingripa i programsekvensen för att påverka textutmatningen i terminalen. Testa denna funktion genom att ersätta “boo” i utmatningskommandot med valfri sträng eller med ett dåligt valskämt, till exempel.

sudo docker run docker/whalesay cowsay What did the shark say to the whale? What are you blubbering about?
bash
Bild: 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

Visa alla Docker-bilder på det lokala systemet

Om du inte är säker på om du redan har laddat ner en viss bild kan du få en översikt över alla bilder på ditt lokala system. Använd följande kommandoradsdirektiv:

sudo docker image
bash

Kommandot docker images (alternativ docker image ls) visar alla lokala bilder inklusive filstorlek, tagg och bild-ID.

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

Om du startar en container laddas den underliggande bilden ned som en kopia från arkivet och lagras permanent på din dator. Detta sparar tid om du vill komma åt bilden vid ett senare tillfälle. En ny nedladdning initieras endast om bildkällan ändras, till exempel om en aktuell version finns tillgänglig i arkivet.

Visa alla behållare på det lokala systemet

Om du vill visa en översikt över alla containrar som körs på ditt system eller har körts tidigare, använd kommandoradsdirektivet docker ps i kombination med alternativet --all (kort: -a):

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

Terminalutmatningen innehåller information som respektive container-ID, den underliggande bilden, kommandot som kördes när containern startades, tidpunkten då containern startades och status.

Om du bara vill visa de containrar som för närvarande körs på ditt system, använd kommandoradsdirektivet docker ps utan några andra alternativ:

sudo docker ps
bash

För närvarande bör det dock inte finnas några aktiva containrar på ditt system.

Skapa Docker-bilder

Vår Docker-handledning har visat dig hur du hittar bilder i Docker Hub, laddar ner dem och kör dem på vilket system som helst där Docker-motorn är installerad. Men med Docker får du inte bara tillgång till det omfattande utbudet av appar som finns i registret. Plattformen erbjuder också ett brett utbud av alternativ för att skapa egna bilder och dela dem med andra utvecklare.

I de inledande kapitlen i denna Docker-handledning har du redan lärt dig att varje Docker-bild baseras på en Dockerfile. Du kan tänka dig Dockerfiles som en slags byggmall för bilder. Det är enkla textfiler som innehåller alla instruktioner som Docker behöver för att skapa en bild. I följande steg lär du dig hur du skriver denna typ av Dockerfile och instruerar Docker att använda den som grund för din egen bild.

  1. Skapa ny katalog: Docker-utvecklingsteamet rekommenderar att du skapar en ny katalog för varje Dockerfile. Kataloger skapas enkelt i Linux-terminalen. Använd följande kommandoradsdirektiv för att skapa en katalog med namnet mydockerbuild:
mkdir mydockerbuild
bash
Bild: Ubuntu terminal: The command mkdir
Create new directories with the command mkdir
  1. Navigera i den nya katalogen: Använd kommandot cd för att navigera i den nyskapade arbetskatalogen.
cd mydockerbuild
bash
Bild: Ubuntu terminal: The command cd
With the help of the cd command, switch to another working directory
  1. Skapa ny textfil: Du kan också enkelt skapa textfiler via terminalen med Ubuntu. Använd en editor som Nano eller Vim för att göra detta. Skapa en textfil med namnet Dockerfile i katalogen mydockerbuild.
nano Dockerfile
bash
Bild: Ubuntu terminal: Create text files with Nano
The text editor Nano is preinstalled on all Ubuntu versions
  1. Skriv Dockerfile: Den nyskapade textfilen fungerar som en byggplan för din egenutvecklade bild. Istället för att programmera bilden från grunden kommer vi i denna Docker-handledning att använda demobilden docker/whalesay som mall. Den integreras med kommandot FROM i din Dockerfile. Använd taggen :latest för att hänvisa till den senaste versionen av bilden.
FROM docker/whalesay:latest

Hittills fungerar docker/whalesay genom att du matar in ord i dess mun. I terminalen visas den exakta texten som du har angett i kombination med kommandot för att starta containern. Men det skulle vara mer intressant om skriptet automatiskt genererade ny textutdata. Detta kan göras till exempel genom att använda programmet fortunes som finns på alla Linux-system. Den grundläggande funktionen hos fortunes är att generera lyckokaksordspråk och humoristiska aforismer. Använd följande kommando för att uppdatera ditt aktuella lokala paketindex och installera fortunes:

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

Definiera sedan ett CMD-uttryck. Detta exekveras efter RUN-kommandot, såvida det inte har skrivits över av anropet (docker run image CMD). Använd följande kommando för att köra fortunes-programmet med alternativet -a (”Välj från alla databaser”) och visa utdata via cowsay-programmet i terminalen:

CMD /usr/games/fortune -a | cowsay

Din Dockerfile bör se ut enligt följande:

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

Observera: Kommandon i en Dockerfile har alltid enkel radavstånd och börjar alltid med ett nyckelord. Den underliggande syntaxen är inte skiftlägeskänslig, så det spelar ingen roll om du skriver med stora eller små bokstäver. Det finns dock en fastställd regel för hur nyckelord ska skrivas.

Bild: The text editor Nano in the Ubuntu terminal
Control the text editor Nano via the key combinations given in the footer
  1. Spara textfil: Spara din inmatning. Om du använder Nano-redigeraren sparar du med tangentkombinationen [CTRL] + [O] och bekräftar med [ENTER]. Nano visar ett meddelande om att tre rader har skrivits till den valda filen. Stäng textredigeraren med tangentkombinationen [CTRL] + [X].
  2. Skapa bild som Dockerfile: För att skapa en bild från en Dockerfile, navigera först till katalogen där textfilen finns. Starta bildskapandet med kommandoradsdirektivet docker build. Om du vill namnge bilden individuellt eller förse den med en tagg, använd alternativet -t följt av önskad kombination av etikett och tagg. Standardformatet är name:tag.

I det aktuella exemplet ska en bild med namnet docker-whale skapas:

docker build -t docker-whale .
bash

Den sista perioden indikerar att den underliggande Dockerfile finns i den valda katalogen. Du har också möjlighet att ange en filväg eller en URL för källfilerna.

Byggprocessen startar så snart kommandot bekräftas med [ENTER]. Först kontrollerar Docker-daemonen om den har alla filer som behövs för att skapa bilden. I Docker-terminologi sammanfattas detta under termen ”kontext”.

Då finns docker/whalesay -bilden med taggen :latest:

Om den nödvändiga kontexten för bildskapandet redan finns i sin helhet, startar Docker-daemonen den bildmall som bifogats via FROM i en tillfällig container och går vidare till nästa kommando i Dockerfile. I det aktuella exemplet är detta RUN-kommandot, som gör att fortunes-programmet installeras.

I slutet av varje steg i bildskapandeprocessen ger Docker dig ett ID för motsvarande lager som skapats i steget. Detta innebär att varje rad i den underliggande Dockerfile motsvarar ett lager i den bild som byggts på den.

När RUN-kommandot är klart stoppar Docker-daemonen den container som skapats för det, tar bort den och startar en ny tillfällig container för lagret i CMD-uttrycket. I slutet av skapandeprocessen avslutas och tas även denna tillfälliga container bort. Docker ger dig ID-numret för den nya bilden:

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

Din nyskapade bild finns under namnet docker-whale i översikten över dina lokalt sparade bilder.

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

För att starta en container från din nyskapade image använder du kommandoradsdirektivet sudo docker run i kombination med namnet på imagen:

sudo docker run docker-whale
bash

Om bilden skapades korrekt från Dockerfile bör din val nu inspirera dig med mer eller mindre kloka ord. Obs! Varje gång du startar om containern genereras en ny fras.

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

Tagga Docker-bilder och ladda upp dem till Docker Hub

Om du vill ladda upp din anpassade docker-whale-bild till hubben och göra den tillgänglig för antingen communityn eller en arbetsgrupp måste du först länka den till ett arkiv med samma namn i ditt eget personliga namnområde. I Docker-terminologin kallas detta steg för taggning.

För att publicera en bild i Docker Hub, gör så här:

  1. Skapa ett arkiv: Logga in på Docker Hub med ditt Docker-ID och ditt personliga lösenord och skapa ett offentligt arkiv med namnet docker-whale.
Bild: The Docker hub: Entry form for creating a repository
Create a repository for your custom image / Source: hub.docker.com
  1. Bestäm bild-ID: Bestäm ID för din anpassade bild docker-whale med hjälp av kommandoradsdirektivet docker images.
Bild: 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 fall är bild-ID:t a8f2048c9ab8. Vi behöver detta för taggning i nästa steg.

  1. Tagga bilden: Tagga docker-whale -bilden med kommandoradsprogrammet docker tag enligt följande:
sudo docker tag [Image-ID][Docker-ID]/[Image-Name]:[TAG]
bash

I det aktuella exemplet lyder kommandoradsdirektivet för taggning:

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

Du kan kontrollera om du har taggat din bild korrekt eller inte med hjälp av översikten docker images. Namnet på arkivet ska nu innehålla ditt Docker-ID.

Bild: Ubuntu terminal: Image overview before and after tagging
Link images with your Docker ID using the command docker tag
  1. Ladda upp bilden: För att ladda upp bilden måste du först logga in på Docker Hub. Detta kan göras med kommandot docker login.
sudo docker login
bash

Terminalen uppmanar dig sedan att ange ditt användarnamn (Docker-ID) och lösenord.

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

Om inloggningen lyckades, använd kommandoradsdirektivet docker push för att ladda upp din bild till det nyskapade arkivet.

sudo docker push [Namespace]/docker-whale
bash

Uppladdningen bör bara ta några sekunder. Den aktuella statusen visas i terminalen.

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

Logga in på Docker Hub via webbläsaren för att visa den uppladdade bilden.

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

Om du vill ladda upp mer än en bild per arkiv, använd olika taggar för att erbjuda dina bilder i olika versioner. Till exempel:

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

En översikt över de olika bildversionerna finns i Docker Hub-arkivet under fliken “Tags”.

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

Bilder av olika projekt bör dock erbjudas i separata arkiv.

Om uppladdningen lyckades kommer din anpassade bild nu att vara tillgänglig i det offentliga arkivet för alla Docker-användare över hela världen.

  1. Testkörning: Testa om uppladdningen lyckades genom att försöka ladda ner bilden.

Observera att den lokala versionen av bilden först måste raderas för att en ny kopia med samma tagg ska kunna laddas ner. Annars kommer Docker att rapportera att den önskade bilden redan finns i den aktuella versionen.

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

För att radera den lokala Docker-bilden använder du kommandoradsdirektivet docker rmi i kombination med motsvarande bild-ID. Detta bestäms som vanligt via docker images. Om Docker loggar en konflikt, t.ex. eftersom ett bild-ID används i flera arkiv eller används i en container, upprepar du kommandot med alternativet --force (-f förkortat) för att tvinga fram en radering.

sudo docker rmi -f a8f2048c9ab8
bash
Bild: 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

Visa en översikt över alla lokala bilder igen:

sudo docker Images
bash

De borttagna elementen ska inte längre visas i terminalutmatningen. Använd nu kommandot pull i arkivet för att ladda ner en ny kopia av bilden från Docker Hub.

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

Ytterligare Docker-ämnen och handledningar

Docker-universumet är stort och med tiden har ett levande ekosystem utvecklats från Docker-verktygen. Docker är särskilt användbart för administratörer, framför allt om de hanterar komplexa applikationer med flera containrar parallellt på olika system. Docker erbjuder olika funktioner för samordning av sådana kluster. Mer information om detta finns i vår artikel om Docker-samordning med Swarm och Compose.

Den digitala guiden innehåller ytterligare handledningar för arbete med Docker:

  • Konfigurera ett Docker-arkiv
  • Docker-container volymer
  • Docker: Säkerhetskopiering och återställning
  • Installera och köra Docker på en Linux-server
  • Docker Compose-handledning

Docker är lämpligt för olika tillämpningsscenarier. Du hittar följande handledningar i den digitala guiden:

  • Distribuera WordPress i Docker-containrar
  • Kör ett VPN i en Docker-container med SoftEther
  • Nextcloud-installation med Docker
  • Installera Portainer under Docker
  • Redis i Docker-containrar
  • Valheim Docker-server

Docker är inte alltid det bästa valet för alla applikationer. En av våra artiklar behandlar de mest populära alternativen till Docker. Dessutom har vi många artiklar som jämför Docker med andra plattformar:

  • Kubernetes vs. Docker
  • Openshift vs. Docker
  • Podman vs. Docker
Gå till huvudmeny