Vad är Docker och Containers

Gratis webinar

 Vad är Docker och Containers

Docker.pptx.pdf

Lunchtimme med
Stefan
Docker och Containers

Stefan Holmberg, Systementor AB

Agenda

Vad är Docker (dvs containers)
• Virtuella maskiner vs Docker
• Vad är Linuxdistributioner och relaterar det till Docker?
• Resultatet: container är som en VM fast med subsekund boot

Användningsområden
• För utvecklare (olika miljöer, versioner av SQL etc etc etc)
• Deploya vår applikation med OS och all konf = aldrig mer
(jaha det funkar inte på kundens server för dom har ju v 2.2
av blablabla)
• Low cost/low resource isolerade miljöer
• Ex Cloud hosting tjänster idag hostar mha Docker images
(ex Elastic Beanstalk, Azure App Service)

Praktiska demonstrationer

Kubernetes

Om mig
• Eget företag i 23 år
• Konsultat som Webutvecklare( .NET stack ) bank/finans/ecommerce
• Utbildar inom IT (.NET, IOT, Säkerhet, Java)
• SAAS tjänster Cloud


https://systementor.se

Virtuella maskiner
Definition
A program to simulate a computer inside
a computer. It is useful for testing programs that need a
separate computer, without actually having a
second computer.
DET ÄR INTE: "dual boot".
Exempel:
Vic64/Nintendo emulatorer på PC
Köra många maskiner samtidigt (eget "labb"
och sätta upp nätverk etc hemma)
Obs!
Alla virtuella maskiner har ett eget OS osv osv
https://systementor.se

Stefan demar
Vi skapar en ny virtuell maskin
Vi laddar ner Ubuntu 20 (2.7GB)
Vi installerar tex Ubuntu …
Vi installerar ex Apache/Tomcat
Java 11 etc etc etc
Vi startar en virtuell maskin
Of course I’m not gonna do this while you are waiting...
https://systementor.se

Stefan demar
Vi skapar en ny container...
Lås oss säga med MySQL v5.7.33 (gammal
men låt oss säga att en kund har problem
med vår app och dom kör just den
versionen )
Vi startar containern och konfar nätverk
så port 3306 (MySQL porten) tunnlas till hosten - dvs (localhost, 3306) kommer funka då
Vi kör MySQL prompt mot den…
Vi stänger ner
Vi startar igen osv sov
Nu har vi har en kund till och den kör MySQL 8
Vi skapar container, startar, kör osv osv
https://systementor.se

docker pull mysql:5.7.33
docker run --name mysqlold -p 3306:3306 -e MYSQL_ROOT_PASSWORD=stefan mysql:5.7.33
docker stop mysqlold
docker pull mysql:latest
docker run --name mysqlnew -p 3306:3306 -e MYSQL_ROOT_PASSWORD=stefan mysql:latest
docker stop mysqlnew

Begrepp
VM

DOCKER

ISO (Dvs en fil med ett “operativsystem” i redo att installeras)
STORA FILER, ex 2,7GB (Ubuntu 20)

IMAGE (dessa kan man hitta på tex hub.docker.com)
De är smarta (“changeset”-drivna lite som git) och bygger på andra images etc
(väsentligt mindre att ladda ner).

Används för att skapa

Docker hanterar images åt oss (vi behöver inte komma ihåg
c:\stefan\downloads eller var det nu var)
Används för att skapa

Virtual machine

Container

En container är också en körbar “dator”
En virtuell maskin är en körbar ”dator”

https://systementor.se

Same same but different names alltså?
Absolut INTE!
Alla containers DELAR Linuxkärnan i HOST. Inga helt egna OS
= sjukt mycket mer effektivt - resurs
= sjukt mycket mer effektivt = prestanda
En VM bootar som en vanlig maskin...tar 1 minut?
En Container går igång på 1 sekund eller så!
En container är mer än en “tom” VM - den kan färdigpreppareras med
applikationen man vill köra. Tex vår egen microservice eller så. Eller
Webserver och applikation

https://systementor.se

Vad menas med Linuxdistributioner?

Hur???

Alla har samma Kernel!!! Förenklat är det “bara” Officepaket, fönstersystem,
pakethanterare etc etc som är skillnaden.
Vad tar tid vid boot? Hårdvaruinitiering (kernel)
I Docker delar alla containers på hostens Kernel.
Huereka = när en container “bootar” är kerneldelen ju redan klar

https://systementor.se

Ok men du pratar Linux ???
Jag kör ASP.NET Core och SQL Server

Fine! Jag hostar ALLA mina ASP.NET MVC Core sajter i Azure på en Linux App Service. Deploy
(publish) funkar PRECIS som vanligt
SQL Server: jag kör Azure SQL i Azure men lokalt?

https://systementor.se

Skapa en “egen” image - med vår kod körbar och färdigkonfad på

Vi lägger till en Dockerfile i ASP.NET Core projektet

https://systementor.se

Skapa en “egen” image - med vår kod körbar och färdigkonfad på

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
WORKDIR /app
.dockerignore
COPY *.csproj ./
RUN dotnet restore

COPY . .
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "WebAppDocker.dll"]

https://systementor.se

bin/
obj/

Build image

Ställ dig i mappen med Dockerfile

docker build -t stefanscoreapp .

För att köra:
docker run -p 8080:80 --name myapp stefanscoreapp

Och surfa nu till (hostens) localhost:8080

https://systementor.se

© Copyright Systementor AB. All Rights Reserved
Version: 1.0.20221129.1-b09c551