Introduktion till 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).

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?

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.

Presentation

Steg 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.

Kommandon som täcks i denna demo.

Förväntat resultat:

När du har följt dessa steg ska du kunna öppna din webbläsare och navigera till localhost:8080. Där bör du se sidan "Welcome to nginx" som bekräftar att servern körs korrekt.

Steg 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.

Kommandon som täcks i denna demo.

Ytterligare användbara kommandon i detta skede:

docker init: Initierar ett projekt och ställer några frågor:

  • Överskriv existerande filer? Svara "Yes".
  • Applikationsplattform? Välj "Node".
  • Node-version? Ange "20.17.0".
  • Paketverktyg? Välj "npm".
  • Startkommando? Skriv "npm start".
  • Serverport? Ange "3000".

Efter att ha svarat skapas följande filar:

  • .dockerignore
  • Dockerfile
  • compose.yaml
  • README.Docker.md

Detta sätter upp miljön för att bygga och hantera din applikation i Docker. Nu kan du anpassa Dockerfile till det du behöver.

Steg 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.

Steg 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.

Övning Docker


Presentationer är lånade från kursen 1DV032.