Docker
DESPLEGAMENTD’APLICACIONS
XavierSalaPujolar
InstitutCendrassos
El kernel de Linux
pot particionar el
host en espais aïllats!
Linuxcontainers
(LXC)
Un contenidor permet
executar aplicacions
Aplicació
hola
Les aplicacions que s'executin en
diferents contenidors estaran
aïllades
L’execució en un contenidor no
podrà afectar als altres
Aïllats!
Elscontenidorssón
méseficientsiàgils
quelesmàquines
virtuals
Server
Sistema Operatiu
Hipervisor
Sistema
operatiu
virtualitzat
Binaris i
llibreries
Aplicació
Sistema
operatiu
virtualitzat
Binaris i
llibreries
Aplicació
Server
Sistema Operatiu
Hipervisor
Binaris i
llibreries
Aplicació
Binaris i
llibreries
Aplicació
Màquines virtuals
Contenidors
Pesenmenys
Escreenmés
ràpidament permetenaprofitar
millorelsrecursos
contenidor
Docker
Docker és una
plataforma de
virtualització de
codi obert
sistemade
fitxers
AUFS
linux
containers
És una eina per empaquetar,
distribuir i executar aplicacions
en un contenidors LXC paquetsLleugers
aplicacionsamb
dependències
aplicacions
configurades
Portables
Simplifica el desplegament
de programari
Llibreries
drivers
configuracions
servidorsde
dades
El contenidor conté tot el que cal !
Els contenidors Docker són
portables
Espotexecutar
enaltreshosts
S’executa en sistemes Linux
però també es pot executar
en Windows i MacOS
Atravésde
Boot2Docker
$ docker
comandaperdonar
ordresalservei
Serveidockerque
executaelscontenidors
Repositorilocald’
imatges
dockerhub
Arquitectura
# apt-get install docker.io
# yum install docker
Docker es pot instal·lar de
moltes formes...
# wget -N https://get.docker.com/ | sh
EnWindowsiMacOSa
travésdeBoot2Docker
Treballar
ambDocker
La base de tot són les
imatges
Readonly
Imatge
A partir de les imatges es
creen els contenidors S’hiafegeixel
quecalgui
Imatge
Aplicació
contenidor
llibreries
Al executar docker s’especifica
la imatge a fer servir
$ docker run -it ubuntu /bin/bash
nomdel’
imatge
La imatge es busca en el
repositori local ...
$ docker run manel …
Manel
NO
Docker hub
manel
Repositori local
… i si no la troba, a Docker Hub
$ docker run manel …
Manel
manel
Docker hub
Repositori local
En el Docker Hub hi ha una sèrie
d’imatges predefinides
N’hihad’oficialside
creadespelsusuaris
mariano
Es poden gestionar les imatges
del repositori local
$ docker images
$ docker rmi mariano
$ docker import a.tar
manel frederic mariano
$ docker pull pep
Les imatges es poden identificar
de diverses formes
IMATGE TAG ID
ubuntu 14.04 826544226fdc
ubuntu latest 826544226fdc
ubuntu 14.10 245ce11c1f25
mongo latest 05976bd2eb65
centos latest 88f9454e60dd
nom
+
etiqueta
ID
contenidors
Un contenidor Docker és pot
veure com una imatge en
execució
Imatge
contenidor
Potcreartants
contenidors
comcalgui contenidor
Un cop en marxa els
contenidors poden divergir
CONTAINER IMAGE ... NAMES
9e517e81391d ubuntu:14.04 ... serene_elion
d1f29780b247 mysql:latest ... goofy_yalow
sinoesdefineix,
repunnomaleatori
ID
Els contenidors s’identifiquen
amb un nom o amb l’id
Els contenidors executen una
comanda en una imatge
$ docker run manel ls
I’m“ls”
El contenidor està actiu fins que
s’acaba la comanda que s’hi
executa
$ docker run ubuntu uname -a
Linux 0bc52c16ccc4 3.19.1-201.fc21.x86_64 #1 SMP Wed
Mar 18 04:29:24 UTC 2015 x86_64 x86_64 x86_64
GNU/Linux
$
Es poden executar contenidors
interactius
$ docker run -i -t ubuntu /bin/bash
interactive
terminal
Es poden executar contenidors
en mode daemon
$ docker run -d mysql
-e MYSQL_ROOT_PASSWORD=patata
DAEMON
Hi ha comandes per veure l’
estat dels contenidors
$ docker ps
$ docker inspect pep
$ docker port pep
$ docker logs pep $ docker top pep
$ docker diff pep
contenidors
creats
informació
sobreel
contenidor
Per controlar-ne l’execució i el
cicle de vida
$ docker start id
$ docker restart id
$ docker stop id
$ docker attach id
$ docker rm id
$ docker kill id
reiniciar
contenidor
aturat
aturarun
contenidor
unir-sea
un
contenidor
compartir
dades
Es poden compartir carpetes
entre contenidors amb els
volums de dades
$ docker run ubuntu -v /webapp programa
carpeta
persistent
sobreviuenal
contenidor
espotmuntar
endiversos
contenidors
$ docker run ubuntu -v /opt/x:/var/y programa
/opt/x /var/y
Espoden
compartirdades
ambelhost
Es poden crear contenidors de
volums de dades
agafar
dades
$ docker run -it --name data -v /dades
busybox /bin/sh
$ docker run -d -volumes-from data pepet
pepet
data
dades
dades?
accésdexarxa
Perquè un contenidor es
comuniqui hi ha dues opcions link
exposeports
Els ports es poden mapejar en el
host
$ docker run -p 80:80 -d nginx
$ docker run -P -d nginx
totselsports
automàticament
host contenidor
$ docker run ubuntu -p 8000:80 -d nginx
http://localhost:8000
80
$ docker run --name db -d mysql
$ docker run -d -P --name app --link db:bdd webapp
db
app
bdd
L’enllaçpermet
comunicardeforma
seguraelscontenidors
contenidor Àliesdel’
enllaç
Crearuna
imatge
Es poden crear imatges a partir d’un
contenidor
Imatgecontenidor
$ docker -a “xavier” commit 2341f02a234 josep
pepet
2341f02a234
josep
mantenidor ID
Si es té una aplicació dins d’un
contenidor es podrà distribuir en forma
d’imatge
Imatge
josep
$ docker run -d josep
queespodrà
executarfàcilment
Per transportar-lo a una altra màquina s’
empaqueta amb tar
export
save
load
import
Es poden “construir” imatges dient com han de
ser
Dockerfile
frederic
Instruccions
FROM ubuntu:14.10
MAINTAINER Xavier Sala
RUN apt-get update
RUN apt-get install -y apache2
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
EXPOSE 80
ENTRYPOINT ["/usr/sbin/apache2"]
CMD ["-D", "FOREGROUND"]
Imatgebase
comandesa
executar
Portaobrir
executaral
iniciar
Es construeix passant-li
el fitxer amb les
instruccions
$ docker build -name=frederic Dockerfile
nomdel’
imatge
utilitatsbasades
endocker
Hi ha eines per automatitzar el
desplegament, crear clústers
de contenidors, etc...
Dockerespot
ferserviren
producció
Swarm
kubernetes
docker-machine
compose
Mesos
Compose està
pensat per crear
diversos contenidors
en un sol fitxer
facilitadesplegar
aplicacionscomplexes
Docker-machine
simplifica el
desplegament en
el núvol o en
màquines virtuals
Swarm permet crear
clústers de hosts
Docker espotferservir
qualsevol
Osigui...
Dockerofereixels
avantatgesdeles
màquinesvirtuals
Dockerfacilitala
distribucióde
programari
Versió 1 - 2015
algunes images són d’openclipart.org

Introducció a Docker