Slide 1

Slide 1 text

Docker @eloycoto

Slide 2

Slide 2 text

@Eloycoto 2008 2011 2013

Slide 3

Slide 3 text

Que es docker? Docker es una plataforma para “build, run and ship”. Reduce la fricción entre dev, QA y SysAdmins. Con docker-registry mejora los flujos de trabajo.

Slide 4

Slide 4 text

Cuando usar docker? Exportar imágenes que has probado antes Reducir errores en staging y producción. Cuando necesitas escalar.

Slide 5

Slide 5 text

Por qué usar docker? Mucho más rápido que una VM. Olvidarse de los problemas de espacio, permisos en las VM.

Slide 6

Slide 6 text

16K Github starts 3K Github forks 4.9K Pull request 12K Commits 3K Issues Docker status

Slide 7

Slide 7 text

Un poco de historia

Slide 8

Slide 8 text

Un poco de historia

Slide 9

Slide 9 text

Docker status Simpleza Rendimiento Contenedores Vms Baremetal

Slide 10

Slide 10 text

Docker status

Slide 11

Slide 11 text

Docker Images Cow filesystem Base Image Layer+parentid Base image apt-get install git git clone git@repo

Slide 12

Slide 12 text

Docker Images Shell $ docker pull ubuntu $ docker images REPOSITORY TAG IMAGE ID VIRTUAL SIZE ubuntu latest 5506de2b643b 197.8 MB $ docker run -t ubuntu apt-get update --name example $ docker ps -a CONTAINER ID IMAGE COMMAND STATUS aeab8223ce55 ubuntu:14.04 "apt-get update" Exited (0)

Slide 13

Slide 13 text

Dockerfile FROM ubuntu MAINTAINER eloy.coto [email protected] RUN apt-get update RUN apt-get install -y nginx ADD nginx.conf /etc/nginx/nginx.conf WORKDIR /etc/nginx ENTRYPOINT ["nginx", "-c", "/etc/nginx/nginx.conf"] EXPOSE 80 Dockerfile

Slide 14

Slide 14 text

Dockerfile Options FROM MAINTAINER RUN ENV USER ADD WORKDIR ENTRYPOINT CMD EXPOSE VOLUME Dockerfile

Slide 15

Slide 15 text

Dockerfile Shell $ docker build -t eloycoto/nginx . $ docker history eloycoto/nginx . $ docker run -d -p 80:80 eloycoto/nginx $ docker ps

Slide 16

Slide 16 text

Docker History Shell $ docker history eloycoto/nginx

Slide 17

Slide 17 text

Docker Run $ docker run -p 80:80 -d --name nginx eloycoto/nginx 2ca6b9998fcaf53e2c1976eb19318c849c592d0e84e66 $ docker ps $ curl http://localhost:80 -I HTTP/1.1 404 Not Found Server: nginx Connection: keep-alive $ docker logs nginx Shell

Slide 18

Slide 18 text

$ docker logs nginx 2014/11/09 10:49:00 [error] 12#0: *1 "/web/index.html" is not found (2: No such file or directory), client: 172.17.42.1, server: _, request: "HEAD / HTTP/1.1", host: "localhost" 172.17.42.1 - - [09/Nov/2014:10:49:00 +0000] "HEAD / HTTP/1. 1" 404 0 "-" "curl/7.35.0" $ docker logs -f nginx Docker logs Shell

Slide 19

Slide 19 text

$ docker run \ -v = Mapea un volumen al container {HOST:CONTAINER} -p = Natea un puerto del host al container {HOST:CONTAINER} -d = Detached -i = Mantiene el stdin en el container -e = Setea una env variable --link = Hace un net bridge con otro container --rm = Elimina el container al acabar --volumes-from = Usa los volúmenes de otro container. Docker Run Options Shell

Slide 20

Slide 20 text

$ docker start nginx $ docker stop nginx $ docker kill nginx $ docker inspect nginx $ docker ports nginx 80/tcp -> 0.0.0.0:80 $ docker top nginx $ docker attach nginx Docker options Shell

Slide 21

Slide 21 text

Docker hub Repositorio de imágenes. Hosted por Docker INC Open source y basado en Flask Builds automáticos con git hooks

Slide 22

Slide 22 text

$ docker login $ docker pull $ docker push Docker Hub options Shell

Slide 23

Slide 23 text

Docker workflow build Time push pull test pull kill start Dev Staging Prod

Slide 24

Slide 24 text

Va a funcionar

Slide 25

Slide 25 text

Tests #1 Test de blog estático con Polo #2 Nodejs app con redis master-slave #3 Fig http://github.com/eloycoto/docker_examples/

Slide 26

Slide 26 text

Proyectos a seguir Fig Ambassador Kubernetes Flocker Deis Coreos-fleet-etcd Apache mesos

Slide 27

Slide 27 text

Facilidad de mantener imágenes Y en producción? Asignación de recursos a los containers Dockerfiles Una comunidad que crece muy rápido CoreOS un sistema operativo para docker

Slide 28

Slide 28 text

Docker es estable, pero las librerías alrededor aún están “naciendo”. Mi experiencia con networking no son del todo buenas. Por el momento pocos casos de éxito Y en producción?

Slide 29

Slide 29 text

Email: [email protected] Blog: http://acalustra.com Twitter: @eloycoto