2015-03-30 1 Agenda Vad är Docker?

2015-03-30
Build, Ship and Run Any App, Anywhere
Agenda
• Vad är Docker?
• Docker vs. virtuella maskiner.
• Historik, status, plattform.
• Hello World.
• Termer: Image och Containers.
• Montera volym, publicera portar, länka.
• Dockerfile, Dockerhub.
• Användning av resurser.
2
Vad är Docker?
Docker is an open-source project that
automates the deployment
of applications inside software
containers, by providing an additional
layer of abstraction and automation
of operating system–level
virtualization on Linux.
[Source: en.wikipedia.org]
3
1
2015-03-30
Docker: Namnet
[www.docker.com]
docker: docker {substantiv}
hamnarbetare · stuveriarbetare ·dockarbetare
• Tillhandhåller wrapper runt ett mjukvarupaket:
«Build, Ship and Run Any App, Anywhere».
[www.docker.com]
• Likhet med container: container är alltid
densamma oavsett innehåll eller hur den
fraktas.
4
Docker vs. virtuell maskin
Källa: https://www.docker.com/whatisdocker/
5
Docker i produktion
6
2
2015-03-30
Docker -termer
• libvirt: plattform för virtualisering.
• LXC (LinuX Containers): Ett antal isolerade
Linuxbaserade system (containers) på samma värd.
• Skiktbaserat File System.
[Source: https://docs.docker.com/terms/layer/]
7
Historik
• 2013-03: Första release som Open Source.
• 2013-09: Samarbete med RedHat(Fedora, RHEL,
OpenShift).
• 2014-03: Ett av de största projekten på GitHub.
• 2014-05: JAX Innovation Award (pris för mest
innovativa produkten).
8
Technology Radar
We fully expect to see a large pace of change in the
Docker ecosystem over the next year, and strongly
suggest you take a look at what Docker could offer
your own organisation.
Källa: http://www.thoughtworks.com/radar/tools/docker
9
3
2015-03-30
Cloud Computing Trends
Docker, in just its first year on the market, is already
being used by 13 percent of organizations. Even
more impressively, more than a third (35 percent) of
respondents report plans to use Docker.
Källa: Cloud Computing Trends, january 2015
10
Plattform
• Ett antal olika Linux distributioner (Ubuntu, Fedora,
RHEL, Centos, openSUSE, ...).
• Molntjänster (Amazon EC2, Microsoft Azure, Google
Compute Engine, Rackspace).
• 2014-10: Microsoft annonserar planer på att
integrera Docker med nästa version av Windows
Server.
11
Hello World
Enkelt kommando - Ad-Hoc Container
• Windows: VirtualBox VM (boot2docker)
• Använder boot2docker länk för att ansluta till VM via
kommandopromt.
• docker run busybox /bin/echo ‘Hello
World’
• docker images [-a]
• docker ps –a
12
4
2015-03-30
Termer – Image
• Bestående avspegling som kan köras
• images: Listar alla avspeglingar.
• run: Skapa container från avspegling och exekvera
kommando i denna.
• tag: Namnger avspegling.
• pull: Laddar ner avspegling från förråd.
• rmi: Tar bort lokal avspegling.
13
Termer - Container
• Körbara instanser av avspegling
•
•
•
•
•
•
•
•
ps: Listar alla startade containers.
ps –a: Lista alla containers (även stoppade).
top: Visar processer i container.
start: Startar container.
stop: Stoppar körning av container.
pause: Pausar alla processer inuti container.
rm: Tar bort container.
commit: Skapar avspegling av container.
14
Daemon Container
• Öppnar Terminal i container:
• docker run –it ubuntu /bin/bash
• Gör eventuella förändringar.
• Skapa ny avspegling med modifieringarna:
• Docker commit [containerId] [image]
• Körs som daemon: docker run –d
[image] command
• docker logs [-f] [containerId]
15
5
2015-03-30
Montera volymer
• Logga till värddator.
• Lägger till skript för att logga till:
/log/hello3.log
• docker run -d –v
/home/docker/log:/log
/bin/bash /sayHello.sh
• Kör andra container, volym kan delas av
denna.
16
Publicera port
• Sample Web-Server: training/webapp
• https://registry.hub.docker.com/u/training/
webapp/
• docker run –d –P training/webapp
• Slumpmässig port på värddator.
• docker run –d –p 20000:5000
trianing/webapp
• Knyter container port 5000 till värddatorns
port 20000.
17
Länka containers
• Volymer för information kan delas mellan
containers.
• Information om nätverket kan inkluderas:
• docker run --name my_serv1 –d –e
PROVIDER=Serv1 training/webapp
• docker run –ti --link my_serv1:serv1
ubuntu /bin/bash
• set
• wget -qO$SERV1_PORT_5000_TCP_ADDR:$SERV1_PORT_500
0_TCP_PORT
18
6
2015-03-30
Dockerfile
• Skapar avspegling automatiskt med ett skript:
«Dockerfile».
• Kan hanteras av system för versionshantering: Git
eller SVN, tillsammans med alla beroenden.
• Docker Hub kan automatiskt skapa avspeglingar
baserade på dockerfiles på Github.
19
Exempel Dockerfile
• Dockerfile:
• FROM training/webapp
ADD testFile.txt /testFile.txt
ENV PROVIDER MyDockerFile
• Lägger till testFile.txt i avpsegling.
• docker build [DockerFileDir]
• docker inspect [imageId]
20
Docker Hub
• Publikt förråd för Docker images
• https://hub.docker.com/
• docker search [term]
• Automatiskt: Har byggts automatiskt från Dockerfile.
• Källa finns tillgängligt på GitHub.
21
7
2015-03-30
Docker Hub
22
Användning av resurser
• top / ps / free -m
• Start 100 WebServer containers
• docker run -d -p $hostPort:5000 -e "PROVIDER=$provider"
training/webapp
• docker ps [containerId]
• top / ps / free -m
23
Dokumentation
• Hemsida för Docker: https://www.docker.com/
• Introduktion: https://www.docker.com/whatisdocker/
• Installation och användareguide: https://docs.docker.com/
24
8
2015-03-30
Kurs
• Docker – grundkurs, 2 dagar.
25
Build, Ship and Run Any App,
Anywhere
26
9