Installera Docker
Kör containerbaserade system på Windows och Linux Mint, med hela installationen och de vanligaste fällorna.
Vad ni får ut av det här
När ni är klara kan ni starta ett helt program, med databas och allt, genom att skriva en rad i ett terminalfönster. Ni 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 ni containern och börjar om. Datorn märker ingenting.
Docker är också en teknisk färdighet som ni 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 ni får den här förståelsen på en eftermiddag.
Det här behöver ni innan ni 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 ni sällan det, så räkna med att köra det här på en egen dator.
- Minst 8 GB minne om ni 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. Ni 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 ni också vill förstå vad ni gör. Svårighetsgraden ligger mitt emellan: ni skriver kommandon, men ni 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: er 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 ni startar en avbild blir den en container. Samma avbild ger samma resultat på er 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 ni 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 er.
- 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 ni slå på det i datorns BIOS, och då behöver ni 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 ni ett versionsnummer tillbaka är ni klara.
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. Ni behöver alltså inte betala, men ni 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 ni 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 er Mint bygger på. Det är den ni 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 ni kontrollera att det blev rätt innan ni 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 ni:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Till sist: lägg er användare i gruppen docker så att ni 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 ni två versionsnummer är ni 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 ni 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. Ni får en hälsningstext som förklarar vad som just hände. Prova sedan något ni 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 ni får tillbaka markören. -p 8080:80 kopplar port 8080 på er dator till port 80 inuti containern, där webbservern lyssnar. --name min-webb ger containern ett namn så att ni 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 ni vad som är igång, och med docker stop min-webb och docker rm min-webb stänger ni 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 ni i mappen kör ni 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 ni 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å ni känner igen er.
Städa upp efter er
Avbilder och volymer ligger kvar tills ni 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 ni är säkra på vad som faktiskt inte behövs längre.
Så här vet ni 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". Ni 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 ni gör härnäst
Nu när Docker är på plats kan ni köra riktiga system. Installera Nextcloud ger företaget en egen filyta. Installera Vaultwarden löser lösenorden, vilket ni 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 ni faktiskt har.