Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introducción a docker

Eloy Coto
November 14, 2014

Introducción a docker

Introducción de la charla de docker en el XVI Betabeers galicia.

http://acalustra.com/hablando-de-docker-en-betabeers-galicia.html

Eloy Coto

November 14, 2014
Tweet

More Decks by Eloy Coto

Other Decks in Technology

Transcript

  1. 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.
  2. Cuando usar docker? Exportar imágenes que has probado antes Reducir

    errores en staging y producción. Cuando necesitas escalar.
  3. Por qué usar docker? Mucho más rápido que una VM.

    Olvidarse de los problemas de espacio, permisos en las VM.
  4. 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)
  5. 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
  6. Dockerfile Shell $ docker build -t eloycoto/nginx . $ docker

    history eloycoto/nginx . $ docker run -d -p 80:80 eloycoto/nginx $ docker ps
  7. 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
  8. $ 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
  9. $ 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
  10. $ 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
  11. Docker hub Repositorio de imágenes. Hosted por Docker INC Open

    source y basado en Flask Builds automáticos con git hooks
  12. Tests #1 Test de blog estático con Polo #2 Nodejs

    app con redis master-slave #3 Fig http://github.com/eloycoto/docker_examples/
  13. 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
  14. 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?