Installera Docker
Kör containerbaserade system på Windows och Linux Mint, med hela installationen och de vanligaste fällorna.
Senast granskad:
Vad du får ut av det här
När du är klar kan du starta ett helt program, med databas och allt, genom att skriva en rad i ett terminalfönster. Du kan prova Odoo, WordPress, Nextcloud eller n8n på företagets dator utan att installera något som ligger kvar och skräpar efteråt. Blir det fel raderar du containern och börjar om. Datorn märker ingenting.
Docker är också en teknisk färdighet som du har nytta av långt efter den här installationen. Nästan varje utvecklingsjobb i Sverige använder containrar på ett eller annat sätt, och du får den här förståelsen på en eftermiddag.
Det här behöver du innan du börjar
- En dator med en uppdaterad 64-bitarsversion av Windows 10 eller 11, eller Linux Mint 21 eller senare. Docker Desktop kräver att Windows är påsatt med sina senaste större uppdateringar, och Windows 10 har dessutom lämnat Microsofts ordinarie support, så Windows 11 är det säkrare valet på en ny dator.
- Administratörsrättigheter på datorn. På en delad eller styrd dator har du sällan det, så räkna med att köra det här på en egen dator.
- Minst 8 GB minne om du ska köra något större än ett testexempel. Docker i sig tar lite, men en databas och en webbserver bredvid varandra vill ha utrymme.
- Ungefär 10 GB ledigt på disken. Bilderna som laddas ner är stora.
- Tålamod med ett svart fönster. Du kommer att skriva kommandon, och varje kommando förklaras här.
Tidsåtgång och svårighetsgrad
Installationen tar tjugo minuter på Linux Mint och lite längre på Windows, där datorn ska startas om en gång. Räkna med en eftermiddag för hela guiden om du också vill förstå vad du gör. Svårighetsgraden ligger mitt emellan: du skriver kommandon, men du administrerar ingen server och kan inte förstöra något som inte går att radera.
Vad en container faktiskt är
Ett program behöver sällan bara sig självt. Det behöver rätt version av Python eller PHP, en databas, ett par bibliotek och en handfull inställningar. Det är därför installationer strular: din dator har version 3.10 och programmet ville ha 3.12.
En container är programmet plus allt det där, paketerat i ett enda knyte. Knytet kallas image, alltså avbild, och när du startar en avbild blir den en container. Samma avbild ger samma resultat på din dator, på en kollegas dator och på servern. Det är hela poängen.
En container är inte en virtuell maskin. Den delar operativsystemets kärna med datorn i stället för att köra ett eget operativsystem, vilket gör den snabb att starta och lätt att slänga. Containern har sitt eget filsystem, och allt som skrivs inuti den försvinner när den raderas. Ska något sparas lägger du det i en volym, och det återkommer vi till.
Windows: Docker Desktop
På Windows går Docker via WSL2, Windows Subsystem for Linux, som är ett litet Linux som Microsoft byggt in i Windows. Docker Desktop sköter det åt dig.
- Kontrollera att virtualisering är påslaget. Öppna Aktivitetshanteraren, gå till fliken Prestanda och klicka på CPU. Står det Virtualisering: Aktiverat är allt bra. Står det avaktiverat måste du slå på det i datorns BIOS, och då behöver du be någon som gjort det förr om hjälp.
- Öppna PowerShell som administratör och kör
wsl --install. Kommandot installerar WSL2 och en Ubuntu-miljö. Starta om datorn när det är klart. - Ladda ner Docker Desktop från docker.com och kör installationsfilen. Låt rutan om WSL2 vara ikryssad.
- Starta Docker Desktop. Första starten tar en minut eller två. Nere till vänster i fönstret ska en liten val lysa grönt.
- Öppna PowerShell och skriv
docker --version. Får du ett versionsnummer tillbaka är du klar.
Licensen är värd trettio sekunder. Docker Desktop är gratis för privatpersoner, för utbildning och för företag med färre än 250 anställda och under tio miljoner dollar i omsättning. De flesta mindre företag ligger med marginal inom det. Du behöver alltså inte betala, men du ska veta varför.
Linux Mint: Docker Engine
På Linux Mint behövs ingen Docker Desktop. Där kör Docker direkt på systemet, vilket är både enklare och snabbare. Det finns ett paket som heter docker.io i Mints egna arkiv, men det ligger ofta flera versioner efter och saknar kommandot docker compose. Lägg in Dockers eget arkiv i stället.
Öppna Terminal och kör kommandona ett i taget. Först nycklar och förberedelser:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
Nu kommer den rad där de flesta Mint-installationer går fel. Dockers arkiv är byggt för Ubuntu, och Linux Mint har ett eget kodnamn, till exempel xia eller wilma. Skriver du in Mints kodnamn hittar Docker ingenting och apt svarar att arkivet inte finns. Filen /etc/os-release innehåller därför också raden UBUNTU_CODENAME, som talar om vilken Ubuntu-version din Mint bygger på. Det är den du ska använda:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$UBUNTU_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Vill du kontrollera att det blev rätt innan du fortsätter, kör cat /etc/apt/sources.list.d/docker.list och se efter att det står ett Ubuntu-kodnamn i raden, till exempel noble eller jammy. Sedan installerar du:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Till sist: lägg din användare i gruppen docker så att du slipper skriva sudo framför varje kommando.
sudo usermod -aG docker $USER
Logga ut och in igen, annars gäller inte gruppen. Testa sedan med docker --version och docker compose version. Får du två versionsnummer är du igång.
Att lägga en användare i gruppen docker ger i praktiken samma rättigheter som root på datorn. På en egen dator är det rimligt. På en dator som fler använder ska du tänka efter en gång till.
Första containern
Samma kommandon fungerar nu i PowerShell på Windows och i Terminal på Mint. Börja med det minsta:
docker run hello-world
Docker letar efter avbilden lokalt, hittar den inte, laddar ner den och kör den. Du får en hälsningstext som förklarar vad som just hände. Prova sedan något du kan se i webbläsaren:
docker run -d -p 8080:80 --name min-webb nginx
Flaggorna betyder tre saker. -d kör containern i bakgrunden så att du får tillbaka markören. -p 8080:80 kopplar port 8080 på din dator till port 80 inuti containern, där webbservern lyssnar. --name min-webb ger containern ett namn så att du slipper hantera långa id-nummer.
Öppna http://localhost:8080 i webbläsaren. Där står det att Nginx fungerar. Med docker ps ser du vad som är igång, och med docker stop min-webb och docker rm min-webb stänger du av och raderar.
När en tjänst behöver flera delar
De flesta riktiga system består av mer än en container. Nextcloud vill ha en databas bredvid sig, WordPress likaså. Att starta dem var för sig med långa kommandon blir snabbt ohållbart, och därför finns docker compose: en textfil som beskriver alla delar, och ett kommando som startar dem tillsammans.
Filen heter compose.yaml och ligger i en egen mapp. Ett litet exempel:
services:
webb:
image: nginx
ports:
- "8080:80"
restart: unless-stopped
Står du i mappen kör du docker compose up -d för att starta och docker compose down för att stänga. Raden restart: unless-stopped gör att containern startar igen efter en omstart av datorn, vilket du vill ha på allt som ska vara igång på riktigt.
En sak till, och den är viktig: allt som containern skriver i sitt eget filsystem försvinner när containern raderas. Databaser och uppladdade filer ska därför ligga i en volym, ett lagringsutrymme som Docker håller separat. I en compose-fil ser det ut så här under tjänsten:
volumes:
- min_data:/var/lib/data
och längst ner i filen, utan indrag:
volumes:
min_data:
Guiderna för Nextcloud, n8n och Vaultwarden använder alla det mönstret, så du känner igen dig.
Städa upp efter dig
Avbilder och volymer ligger kvar tills du tar bort dem, och en dator med tio provade system börjar få slut på disk. docker ps -a visar alla containrar, även avstängda. docker images visar nedladdade avbilder. Kommandot docker system prune rensar det som inte används av någon container just nu.
Var försiktig med docker system prune -a --volumes ändå. Den tar bort volymer som inte längre används av någon container, till exempel en glömd anonym volym från en borttagen container. Namngivna volymer som fortfarande är kopplade till en container, som min_data i exemplet ovan, rör den inte. Kör den bara när du är säker på vad som faktiskt inte behövs längre.
Så här vet du att det funkade
docker --versionochdocker compose versionsvarar med versionsnummer.docker run hello-worldskriver ut hälsningstexten.- Nginx-containern syns på
http://localhost:8080. - På Mint fungerar kommandona utan
sudo. docker pslistar det som är igång, ochdocker stopstänger av det.
Om det går fel
Windows: "Docker Desktop starting" fastnar. Öppna PowerShell och kör wsl --update, starta sedan om datorn. Hjälper det inte, avinstallera Docker Desktop, starta om och installera igen. Det låter trubbigt och det brukar fungera.
Windows: felmeddelande om virtualisering. Då är virtualisering avstängt i BIOS. Inställningen heter ofta Intel VT-x, AMD-V eller SVM Mode.
Mint: "permission denied while trying to connect to the Docker daemon socket". Du har inte loggat ut och in efter usermod. Logga ut, logga in, prova igen.
Mint: apt hittar inte paketen. Nästan alltid kodnamnet. Kontrollera /etc/apt/sources.list.d/docker.list och se att det står ett Ubuntu-kodnamn där, inte Mints eget.
"port is already allocated". Något annat använder porten. Byt vänstra siffran i -p, till exempel -p 8081:80, och öppna adressen med det nya numret.
Nedladdningen tar evigheter. Avbilder är på hundratals megabyte. På en långsam uppkoppling kan det ta sin tid, och det är inget fel.
Vad du gör härnäst
Nu när Docker är på plats kan du köra riktiga system. Installera Nextcloud ger företaget en egen filyta. Installera Vaultwarden löser lösenorden, vilket du kommer att behöva. Installera n8n automatiserar det som annars görs för hand varje vecka. Och Installera Odoo sätter upp ett helt affärssystem.
Ta ett i taget, och börja med det som löser ett problem du faktiskt har.