introducció a docker
TRANSCRIPT
![Page 1: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/1.jpg)
Docker
DESPLEGAMENT D’APLICACIONSXavier Sala Pujolar
Institut Cendrassos
![Page 2: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/2.jpg)
El kernel de Linux pot particionar el host en espais aïllats!
Linux containers (LXC)
![Page 3: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/3.jpg)
Un contenidor permet executar aplicacions
Aplicacióhola
![Page 4: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/4.jpg)
Les aplicacions que s'executin en diferents contenidors estaran aïllades
![Page 5: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/5.jpg)
L’execució en un contenidor no podrà afectar als altres
Aïllats!
![Page 6: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/6.jpg)
Els contenidors són més eficients i àgils que les mà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
![Page 7: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/7.jpg)
Pesen menys
Es creen més ràpidament permeten aprofitar
millor els recursos
contenidor
![Page 8: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/8.jpg)
Docker
![Page 9: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/9.jpg)
Docker és una plataforma de virtualització de codi obert
sistema de fitxers
AUFS
linux containers
![Page 10: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/10.jpg)
És una eina per empaquetar, distribuir i executar aplicacions en un contenidors LXC paquets Lleugers
aplicacions amb dependències
aplicacions configurades
Portables
![Page 11: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/11.jpg)
Simplifica el desplegament de programari
Llibreries
drivers
configuracions
servidors de dades
El contenidor conté tot el que cal !
![Page 12: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/12.jpg)
Els contenidors Docker són portables
Es pot executar en altres hosts
![Page 13: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/13.jpg)
S’executa en sistemes Linux però també es pot executar en Windows i MacOS
A través de Boot2Docker
![Page 14: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/14.jpg)
$ docker
comanda per donar ordres al servei
Servei docker que executa els contenidors
Repositori local d’imatges
docker hub
Arquitectura
![Page 15: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/15.jpg)
# apt-
get in
stall
docker
.io
# yum instal
l docker
Docker es pot instal·lar de moltes formes...
# wget -N https://get.docker.com/ | sh
En Windows i MacOS a través de Boot2Docker
![Page 16: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/16.jpg)
Treballar amb Docker
![Page 17: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/17.jpg)
La base de tot són les imatges
Read onlyImatge
![Page 18: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/18.jpg)
A partir de les imatges es creen els contenidors S’hi afegeix el
que calgui
Imatge
Aplicació
contenidor
llibreries
![Page 19: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/19.jpg)
Al executar docker s’especifica la imatge a fer servir
$ docker run -it ubuntu /bin/bash
nom de l’imatge
![Page 20: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/20.jpg)
La imatge es busca en el repositori local ...
$ docker run manel …
Manel
NO
Docker hub
manel
Repositori local
![Page 21: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/21.jpg)
… i si no la troba, a Docker Hub
$ docker run manel …
Manel
manel
Docker hub
Repositori local
![Page 22: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/22.jpg)
En el Docker Hub hi ha una sèrie d’imatges predefinides
N’hi ha d’oficials i de creades pels usuaris
![Page 23: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/23.jpg)
mariano
Es poden gestionar les imatges del repositori local
$ docker images
$ docker rmi mariano
$ docker import a.tar
manel frederic mariano
$ docker pull pep
![Page 24: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/24.jpg)
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
![Page 25: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/25.jpg)
contenidors
![Page 26: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/26.jpg)
Un contenidor Docker és pot veure com una imatge en execució
Imatge
contenidor
Pot crear tants contenidors com calgui contenidor
![Page 27: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/27.jpg)
Un cop en marxa els contenidors poden divergir
![Page 28: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/28.jpg)
CONTAINER IMAGE ... NAMES
9e517e81391d ubuntu:14.04 ... serene_elion
d1f29780b247 mysql:latest ... goofy_yalow
si no es defineix , rep un nom aleatori
ID
Els contenidors s’identifiquen amb un nom o amb l’id
![Page 29: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/29.jpg)
Els contenidors executen una comanda en una imatge
$ docker run manel ls
I’m “ls”
![Page 30: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/30.jpg)
El contenidor està actiu fins que s’acaba la comanda que s’hi executa
$ docker run ubuntu uname -aLinux 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
$
![Page 31: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/31.jpg)
Es poden executar contenidors interactius
$ docker run -i -t ubuntu /bin/bash
interactive
terminal
![Page 32: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/32.jpg)
Es poden executar contenidors en mode daemon
$ docker run -d mysql -e MYSQL_ROOT_PASSWORD=patata
DAEMON
![Page 33: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/33.jpg)
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ó sobre el
contenidor
![Page 34: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/34.jpg)
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
aturar un contenidor
unir-se a un
contenidor
![Page 35: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/35.jpg)
compartir dades
![Page 36: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/36.jpg)
Es poden compartir carpetes entre contenidors amb els volums de dades
$ docker run ubuntu -v /webapp programa
carpeta persistent
sobreviuen al contenidor
es pot muntar en diversos
contenidors
![Page 37: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/37.jpg)
$ docker run ubuntu -v /opt/x:/var/y programa
/opt/x /var/y
Es poden
compartir dades
amb el host
![Page 38: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/38.jpg)
Es poden crear contenidors de volums de dades agafar
dades
![Page 39: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/39.jpg)
$ docker run -it --name data -v /dades busybox /bin/sh
$ docker run -d -volumes-from data pepet
pepet
data
dades
dades?
![Page 40: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/40.jpg)
accés de xarxa
![Page 41: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/41.jpg)
Perquè un contenidor es comuniqui hi ha dues opcions link
expose ports
![Page 42: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/42.jpg)
Els ports es poden mapejar en el host
$ docker run -p 80:80 -d nginx
$ docker run -P -d nginx
tots els ports automàticament
host contenidor
![Page 43: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/43.jpg)
$ docker run ubuntu -p 8000:80 -d nginx
http://localhost:8000 80
![Page 44: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/44.jpg)
$ docker run --name db -d mysql$ docker run -d -P --name app --link db:bdd webapp
db
app
bddL’enllaç permet
comunicar de forma segura els contenidors
contenidor Àlies de l’enllaç
![Page 45: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/45.jpg)
Crear una imatge
![Page 46: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/46.jpg)
Es poden crear imatges a partir d’un contenidor
Imatgecontenidor
$ docker -a “xavier” commit 2341f02a234 josep
pepet2341f02a234
josep
mantenidor ID
![Page 47: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/47.jpg)
Si es té una aplicació dins d’un contenidor es podrà distribuir en forma d’imatge
Imatge
josep
$ docker run -d josep
que es podrà executar fàcilment
![Page 48: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/48.jpg)
Per transportar-lo a una altra màquina s’empaqueta amb tar
export
save
load
import
![Page 49: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/49.jpg)
Es poden “construir” imatges dient com han de ser
Dockerfile
frederic
Instruccions
![Page 50: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/50.jpg)
FROM ubuntu:14.10MAINTAINER Xavier Sala
RUN apt-get updateRUN apt-get install -y apache2
ENV APACHE_RUN_USER www-dataENV APACHE_RUN_GROUP www-dataENV APACHE_LOG_DIR /var/log/apache2
EXPOSE 80
ENTRYPOINT ["/usr/sbin/apache2"]CMD ["-D", "FOREGROUND"]
Imatge base
comandes a executar
Port a obrir
executar al iniciar
![Page 51: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/51.jpg)
Es construeix passant-li el fitxer amb les instruccions
$ docker build -name=frederic Dockerfile
nom de l’imatge
![Page 52: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/52.jpg)
utilitats basades en docker
![Page 53: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/53.jpg)
Hi ha eines per automatitzar el desplegament, crear clústers de contenidors, etc...
Docker es pot fer servir en
producció
Swarm
kubernetes
docker
-machine
compose
Mesos
![Page 54: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/54.jpg)
Compose està pensat per crear diversos contenidors en un sol fitxer
facilita desplegar aplicacions complexes
![Page 55: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/55.jpg)
Docker-machine simplifica el desplegament en el núvol o en màquines virtuals
![Page 56: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/56.jpg)
Swarm permet crear clústers de hosts Docker es pot fer servir
qualsevol
![Page 57: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/57.jpg)
O sigui...
![Page 58: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/58.jpg)
Docker ofereix els avantatges de les
màquines virtuals
Docker facilita la distribució de
programari
![Page 59: Introducció a Docker](https://reader034.vdocuments.mx/reader034/viewer/2022042512/55abe7331a28abc4678b45ea/html5/thumbnails/59.jpg)
Versió 1 - 2015
algunes images són d’openclipart.org