Utveckling av moln baserade applikationer 2020

Kurs från 2020-08-31 till 2020-10-08

Containrar

Lektion 3 av 12, måndag den 7:e september 2020

Målet med denna lektion är ge en introduktion till ämnet containrar. Där finns fler olika container system, men vi kommer att fokusera på Docker.

Lektionsplan

Lektion från kl. 8:30 till kl. 16:30

Lunch 12:00 till 13:00

Lektionsteori

Detta är material (artiklar, videoer, blogs, podcasts etc) som är den teoretiska bas för denna lektion, det antas att du har läst/set/lystnad detta innan lektionen starter. Detta är inte prioriterat eftersom allt är viktigt

Containrar

Docker

Orkestrering (Orchestration)

Kubernetes

Total:

Bok: Learn Azure In A Month of Lunches

Detta är vilka delar av den frivilliga bok (Learn Azure In A Month of Lunches) som är releavant för denna lektion

Bakgrundsmaterial

Detta är litteratur som är frivillig, och som kan kan används till at få en djupare insikt i dagens ämnen. Oftast förklara det bakgrunden till dagens lektionsteori, går mer på djupet med ämne eller han har en annan vinkel på det samma material.

Containrar

Computer Stuff They Didn’t Teach You : Containers? So What? Docker 101 Explained

5 Container Alternatives to Docker

Wikipedia: OS-level virtualization

Introducing GitHub Container Registry

Docker

Wikipedia Docker (software)

21 Days of Docker, en bra samling av artiklar

Online kurs: Docker for beginners

A quick introduction to Docker tags

Docker Desktop WSL 2 backend

2018 Docker usage report

“Distroless” Docker Images

Github: DotNet Docker

Comparison: AWS Fargate vs. Google Cloud Run vs. Azure Container Instances

Video (9 min) Virtual Machines vs Docker Containers - Dive Into Docker

Where are Docker Images Stored? Docker Container Paths Explained

Artikel: Exploring a Docker Container’s Filesystem

Video (13 min): Azure Container Instances (ACI) under the hood

Video (14 min): Pros and cons of stable and unique tags in Docker image tagging

Kurs (310 min): Microsoft Learn: Administer containers in Azure

Artikel: Dockerless - series

Artikel: Docker, FROM scratch

Orchestration

Azure Container Orchestration 101: Azure Web Apps vs ACI vs AKS

Video (32 min), Computer Stuff They Didn’t Teach You: Kubernetes and Container Orchestration 101

Kubernetes

Online kurs (60 min): Kubernetes 101

What is Kubernetes?

A Kubernetes story: Phippy goes to the zoo

Azure Kubernetes Service (AKS)

Video (8 min): Technically Speaking: Clayton Coleman on the History of Kubernetes

Video (7 min): A conversation with Brendan Burns: What is Kubernetes?

Video (55 min) Introduction to Microservices, Docker, and Kubernetes

Video (7 min): How Kubernetes deployments work

e-bok: The Kubernetes Book

Helm - The package manager for Kubernetes

Buddy uppgifter

Dagens blogg

Dagens blogg ska innehålla:

Skriv en tutorial i stil med dissa (1 eller 2), men vart i stället ta utgångspunkt i dissa övningar, lägg gärna till litet teori (vad är en container etc).

OBS Akta vad ni skriver i eran blogg, så att ni inte skriver lösenord etc.

Namnge dagens blogg 03.md, ni får själv välja om ni vill ha en stor blogg som innehåller alla dagens övningar, eller om ni delar upp den i fler delar, i så fall ska ni namnge delarna som: 03a.md, 03b.md etc.

Övning 1: Bygg en container

Vi har nu en webb applikation som vi vill gör om till en container, och i första vända kunna köra lokalt på vår dator, men i senare övningar få den at köra i molnet.

Övning 1a: Hello World i Docker

Mål med denna övning: Bygg en container som kan hålla Hello World webb applikationen (samma om vi använda i förra lektion). Och få applikationen att köra i Docker, så att du kan komma åt den med webbläsare: localhost:80.

  1. Installera Docker på din dator: Get Docker
  2. Starta om din dator
  3. Klona ner “Hello world” .NET Core webb applikationen
  4. Lägg till en “Dockerfile”
  5. Bygg din container
  6. Kör din container

Hints:

Blogg:

Övning 1b: Hello World med Docker Compose

Ni har nu en Docker container som innehåller vår Hello World applikation

Mål med denna övning: Gör en Docker compose fil som kan köra din nya Hello World-Docker container

  1. Skåpa en docker-compose.yml fil som beskivar hur eran docker container ska köras
  2. Starta eran applikation med docker-compose up

Docker Compose är speciellt smidigt för lokala utvecklingsmiljö vart man har behov av flera containers (services) jobbar ihop i en applikation. I detta exempel är där endast en service så där finns inte ett jätte behov av en compose fil, men så fort applikationen växer blir den relevant.

OBS: Ni kommer inte att använda denna compose fil mer i denna övning

Övning 2: Publicera Hello World container image

Ni har nu en Docker container som innehåller vår Hello World applikation (och en Docker Compose definition).

Mål med denna övning: Är att skåpa ett Docker image och publicera det till “Github packages” eller “Azure container registry”. Ni väljer själv vilken av dom två system ni vill använda.

Hints:

OBS: Detta behövs för att kunna hosta ert image på en annan maskin eller server (man måste kunna komma åt imaget från internet).

Ni kan nu testa att köra ert image via Play with Docker, beskriv också detta i eran blogg.

Övning 3: Deploy och kör Hello World containrar

Ni har nu skåpat ett Docker image som ligger tillgängligt på internet (äntlig på Github eller Azure), och denna övning handlar om att få vår container att köra någon stans i molnet.

Där finns många sätt at få den att köra i Azure och vi kommer att träna två ACI och AKS. Vart AKS är det mer avancerade variant.

Övning 3a: Azure Container Instance (ACI)

Mål med denna övning: är att deploy ert docker image till ACI. ACI använder man primärt till projekt vart containern ska leva i kort tid, och därför är det bra för vår experiment.

Artikel (3 min): What is Azure Container Instances?

Hints:

Övning 4

Övning 4a, Bygg ett API med Docker

Hints:

Övning 4b, Publicera ert API image

Publicera containern med ert nya API

Övning 4c, Deploy och kör eran applikation

Se till att båda eran Hello World sida och eran API ligger i ACI

Extra övningar

Dissa är extra övningar ni kan göra om ni har tid över, de kan göras i den ordning ni känner för

Extra till övning 3, ACI med Pulumi

Som ni kanske har känt kräver det mycket kommandon med CLI eller klick i portalen att få sina Docker images att köra i ACI

Målet med denna övning är att automatisera alla dissa kommandon/klick med Pulumi.

Hints:

Extra övning 5: Kubernetes och AKS

Ni har nu två containrar (Web + API), det är fortfarrent en liten applikation, men kan redan nu börja att få njuta av att använda Kubernetes till att “konfigurera” hela applikationen (API + web).

Mål med denna övning är att ork­estr­era era Docker containrar med Kubernetes på AKS

Hints:

Extra till övning 5, AKS med Pulumi

Målet med denna övning är att automatisera konfigurationen av AKS med Pulumi.

Hints: