Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Docker for developers

Grazie a Docker è possibile costruire ambienti di sviluppo e di produzione consistenti e riproducibili, in questo talk parleremo delle origini e della storia di Docker, le technical foundation ed alcuni use-cases pratici per capire come è fatto un ambiente dockerizzato e come poterlo usare al meglio.

  • Login to see the comments

Docker for developers

  1. 1. Docker for developers #drupalday2015
  2. 2. Paolo Mainardi (@paolomainardi) ● CTO @sparkfabrik ● Drupal developer ● Docker enthusiast (, dockerhub@paolomainardi) ● Twin of @stefanomainardi ● Linux and open source lover (
  3. 3. Let’s start with questions
  4. 4. ● You read the online tutorial ● You installed docker locally ● You are using for development ● You are using on production Raise your hands if
  5. 5. Outlines ● What is Docker and why it is important to know it. ● What a container is and how to use it. ● Developing PHP applications using Docker. ● Tips and tricks on real world usage.
  6. 6. ● To make your local development and build workflow faster, more efficient, and more lightweight. ○ If it works on my machine, it will work in production ○ No more dependency hell, different versions of PHP with their own libraries, Mysql or Mariadb, Redis or Memcache, Sass or Less compilers, NPM etc.etc. ○ Consistent development environment, same operating system, same libraries, no matter the host operating system you are running. ○ Easy way to replicate production environment. ○ Concentrate on code, instead to (re)build the infrastructure your application needs. Ok, what can I use Docker for ?
  7. 7. What is Docker?
  8. 8. What is Docker ? “Docker allows you to package an application with all of its dependencies into a standardized unit for software development.”
  9. 9. How it is made Docker ? ● It relies on standard linux kernel features only (cgroups, namespaces, capabilities ecc.) ● Static compiled binary based on golang, no extra moving parts. ● It natively runs on every linux distro and on mac/windows too thanks to boot2docker vm. ( ● Fast and lightweight, no added overhead. ● Security by process isolation. ● Open container initiative also baked by Docker inc. (https://www.
  10. 10. Virtual machines Containers Docker is not virtualization
  11. 11. What is a container ?
  12. 12. What is a container ? ● It is a linux process. ● It sits on top of the base docker image (usually an operating system image). ● It has its own network interface. ● It has its own process namespace.
  13. 13. Demo time
  14. 14. Docker is a platform Docker is an open source platform to build, ship and run any app, anywhere. ● Build: Package your application in a container. ● Ship: Move that container from one host to another. ● Run: Execute your application. ● Any app: that runs on Linux (recently native Windows support) ● Anywhere: Local, remote, cloud, VM, RaspberryPI ecc. any platform capable to run the docker engine.
  15. 15. Build: Dockerfiles A “Dockerfile” is a text document that contains all the commands to assemble a docker image in a programmatic and reproducible way.
  16. 16. Build: Dockerfiles FROM ubuntu:14.04 RUN apt-get update && apt-get install -y nginx RUN echo 'Hi, I am in your container' >/usr/share/nginx/html/index.html CMD nginx -g "daemon off;" EXPOSE 80 $ docker build -t paolomainardi/dday15web . $ docker run -d -P paolomainardi/dday15web
  17. 17. BUILD DEMO
  18. 18. Build: What we learned ● It allows to create a docker image in a programmatic and reproducible way. ● Each build step gets cached (thanks to overlaid filesystem) ● Re-run the build allows to skip slow steps (ex: apt-get install)
  19. 19. Ship
  20. 20. Ship: Dockerhub ● git pull ● git push
  21. 21. Ship: Dockerhub ● git docker pull image from the registry ● git docker push image to the registry
  23. 23. Ship: What we learned ● It mimics the git workflow. ● Images are self-contained, independent from the host. ● Exactly the same behaviour, on any environment. ● To easily replicate and share the environment your application expects. ● No more “it worked on my machine” excuse.
  24. 24. Run docker run is-lightning-fast
  25. 25. RUN DEMO
  26. 26. Run: What we learned ● Execution is fast and lightweight. ● There is no overhead, they are just normal OS running processes. ● Containers are isolated.
  27. 27. Any app, anywhere ● If it works on Linux, it works on Docker. ● Not just for command-line apps ○ Chrome-in-docker ○ Firefox-in-docker ○ VPN-in-docker ○ etc…follow this repo to see crazy things: ● Every linux host that run Linux 3.8+ x86_64 kernel
  28. 28. Developing PHP applications using Docker
  29. 29. Developing PHP applications using Docker
  30. 30. Developing PHP applications using Docker
  31. 31. Docker Compose to rule them all
  32. 32. Docker compose ● Describe your stack in one file docker-compose.yml ● Run your stack with a command docker-compose up
  33. 33. front: image: drupal:7.41 volumes: - ./sites/all/modules:/var/www/html/sites/all/modules ports: - "8080:80" links: - mariadb:mariadb mariadb: image: mariadb:10 ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=drupal memcached: image: memcached:1.4.25 ports: - "1211:1211" solr: image: sparkfabrik/drupal-drupal-solr ports: - "8983:8983" docker-compose-yml
  35. 35. The Docker ecosystem When talk about Docker, we talk about an ecosystem of tools. ● Docker engine: Client and server daemon to build, ship and run containers. ● Docker hub: The official Docker image registry. ● Docker compose: Tool to orchestrate multi-container applications. ● Docker machine: Automated Docker hosts provisioning. ● Docker swarm: Host clustering and container scheduling. Much more than this, check it out: