Containers

Introduktion

Denna modul fokuserar på containers och docker. Containers är ett lättviktsalternativ till virtuella maskiner när man vill skeppa och driftsätta sin kod. En stor del av modulen består av demos som visar hur man driftsätter applikationer i containers (med Docker).

[Video (8:16)] [Presentation]

Containers

Vad är egentligen en container och hur skiljer den sig från en virtuell maskin. Vilken overhead hos virtuella maskiner undviker containers, hur, och hur påverkar detta isoleringen?

[Video (13:25)] [Presentation]

Säkerhet

Säkerhet och containers är stort och komplext, främst på grund av att säkerheten bygger på system i Linux såsom Capabilities och SELinux/AppArmor. Då det är utanför omfånget på denna modul (och kurs) att ge en tillräcklig introduktion till dessa ges bara några tips om vad man bör tänka. För den som vill gräva djupare finns mycket material tillgängligt på nätet.

[Video (9:00)] [Presentation]

Demo 1: Docker

Kort introduktion till docker-kommandot och docker hub. Demot visar hur man hämtar en image och startar en container från denna, samt hur man kan köra kommandon inuti en körande container.

[Video (14:49)]

Demo 2: Dockerfiles, images, och unionfs

Kort introduktion till hur man skapar en Dockerfile, bygger en image från denna, och startar en container. Lager och unionfs/overlay är en viktig del av containers och docker, så demot utforskar även hur detta fungerar och diskuterar lagring i image och tillfällig lagring i en container.

[Video (38:44)]

Demo 3: Lagring och mounts

Volymer och bind-mounts kan användas för att lagra filer oberoende av image, t.ex. så att filerna finns kvar efter en uppgradering av en image. Vi skapar en container med neo4j och använder en volym för att spara data. Vi tittar även på hur bind-mount kan används för att dela filer från en katalog med en container.

[Video (25:33)]

Demo 4: Containernätverk

Vi har hittills tittat på hur man kan kommunicera mellan värdmaskin och containers. Ibland vill man skapa nätverk som containers kan kommunicera med varandra över. Vi skapar en microservice i Python och Flask som kommunicerar med databasen från Demo 3 över ett "bridge"-nätverk.

[Video (42:32)]

Demo 5: Docker Compose

Det är smidigt att enkelt kunna starta olika tjänster via docker, men en stor vinst finns i att snabbt kunna återskapa utvecklingsmiljöer. Vi har under tidigare demos utvecklat en enkel, databasdriven microservice som består av tre containers (databas, microservice och reverse proxy). I detta demo tittar vi på hur vi med hjälp av docker compose kan bygga hela applikationen i ett steg, utan att behöva skapa varje container för sig.

[Video (31:24)]

Läsanvisningar

Kursbok

Inga.