Vad är Docker och Containers
Gratis webinar
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