introducció a docker
Post on 20-Jul-2015
118 Views
Preview:
TRANSCRIPT
Docker
DESPLEGAMENT D’APLICACIONSXavier Sala Pujolar
Institut Cendrassos
El kernel de Linux pot particionar el host en espais aïllats!
Linux containers (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!
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
Pesen menys
Es creen més ràpidament permeten aprofitar
millor els recursos
contenidor
Docker
Docker és una plataforma de virtualització de codi obert
sistema de fitxers
AUFS
linux containers
És una eina per empaquetar, distribuir i executar aplicacions en un contenidors LXC paquets Lleugers
aplicacions amb dependències
aplicacions configurades
Portables
Simplifica el desplegament de programari
Llibreries
drivers
configuracions
servidors de dades
El contenidor conté tot el que cal !
Els contenidors Docker són portables
Es pot executar en altres hosts
S’executa en sistemes Linux però també es pot executar en Windows i MacOS
A través de Boot2Docker
$ docker
comanda per donar ordres al servei
Servei docker que executa els contenidors
Repositori local d’imatges
docker hub
Arquitectura
# 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
Treballar amb Docker
La base de tot són les imatges
Read onlyImatge
A partir de les imatges es creen els contenidors S’hi afegeix el
que calgui
Imatge
Aplicació
contenidor
llibreries
Al executar docker s’especifica la imatge a fer servir
$ docker run -it ubuntu /bin/bash
nom de l’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’hi ha d’oficials i de creades pels usuaris
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
Pot crear tants contenidors com calgui contenidor
Un cop en marxa els contenidors poden divergir
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
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 -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
$
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ó sobre el
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
aturar un contenidor
unir-se a un
contenidor
compartir dades
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
$ docker run ubuntu -v /opt/x:/var/y programa
/opt/x /var/y
Es poden
compartir dades
amb el host
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és de xarxa
Perquè un contenidor es comuniqui hi ha dues opcions link
expose ports
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
$ 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
bddL’enllaç permet
comunicar de forma segura els contenidors
contenidor Àlies de l’enllaç
Crear una imatge
Es poden crear imatges a partir d’un contenidor
Imatgecontenidor
$ docker -a “xavier” commit 2341f02a234 josep
pepet2341f02a234
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
que es podrà executar fà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.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
Es construeix passant-li el fitxer amb les instruccions
$ docker build -name=frederic Dockerfile
nom de l’imatge
utilitats basades en docker
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
Compose està pensat per crear diversos contenidors en un sol fitxer
facilita desplegar aplicacions complexes
Docker-machine simplifica el desplegament en el núvol o en màquines virtuals
Swarm permet crear clústers de hosts Docker es pot fer servir
qualsevol
O sigui...
Docker ofereix els avantatges de les
màquines virtuals
Docker facilita la distribució de
programari
Versió 1 - 2015
algunes images són d’openclipart.org
top related