Transcript
Page 1: Docker for developers
Page 2: Docker for developers

Docker for developers#drupalday2015

Page 3: Docker for developers

Paolo Mainardi (@paolomainardi)● CTO @sparkfabrik● Drupal developer● Docker enthusiast (dropdock.io, dockerhub@paolomainardi)● Twin of @stefanomainardi● Linux and open source lover (ildn.net)

Page 4: Docker for developers

Let’s start with

questions

Page 5: Docker for developers

● You read the online tutorial● You installed docker locally● You are using for development● You are using on production

Raise your hands if

Page 6: Docker for developers

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.

Page 7: Docker for developers

● 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 ?

Page 8: Docker for developers

What is Docker?

Page 9: Docker for developers

What is Docker ?

“Docker allows you to package an application with all of its dependencies into a standardized unit for software development.”

https://www.docker.com/what-docker

Page 10: Docker for developers

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. (https://www.docker.com/docker-toolbox)● Fast and lightweight, no added overhead.● Security by process isolation.● Open container initiative also baked by Docker inc. (https://www.

opencontainers.org)

Page 11: Docker for developers

Virtual machines Containers

Docker is not virtualization

Page 12: Docker for developers

What is a container ?

Page 13: Docker for developers

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.

Page 14: Docker for developers

Demo time

Page 15: Docker for developers

Docker is a platformDocker 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.

Page 16: Docker for developers

Build: Dockerfiles

A “Dockerfile” is a text document that contains all the commands to assemble a docker image in a programmatic

and reproducible way.

Page 17: Docker for developers

Build: Dockerfiles

FROM ubuntu:14.04

RUN apt-get update && apt-get install -y nginxRUN 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

Page 18: Docker for developers

BUILD DEMO

Page 19: Docker for developers

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)

Page 20: Docker for developers

Ship

Page 21: Docker for developers

Ship: Dockerhub

● git pull

● git push

Page 22: Docker for developers

Ship: Dockerhub

● git docker pull image from the registry ● git docker push image to the registry

http://hub.docker.com

Page 23: Docker for developers

SHIP TO DOCKERHUB DEMO

Page 24: Docker for developers

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.

Page 25: Docker for developers

Run

docker run is-lightning-fast

Page 26: Docker for developers

RUN DEMO

Page 27: Docker for developers

Run: What we learned

● Execution is fast and lightweight.● There is no overhead, they are just normal OS running processes.● Containers are isolated.

Page 28: Docker for developers

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: https://github.com/jfrazelle/dockerfiles

● Every linux host that run Linux 3.8+ x86_64 kernel

Page 29: Docker for developers

Developing PHP applications using Docker

Page 30: Docker for developers

Developing PHP applications using Docker

Page 31: Docker for developers

Developing PHP applications using Docker

Page 32: Docker for developers

Docker Compose to rule them all

Page 33: Docker for developers

Docker compose

● Describe your stack in one file docker-compose.yml● Run your stack with a command docker-compose up

Page 34: Docker for developers

front: image: drupal:7.41 volumes: - ./sites/all/modules:/var/www/html/sites/all/modules ports: - "8080:80" links: - mariadb:mariadbmariadb: image: mariadb:10 ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=drupalmemcached: image: memcached:1.4.25 ports: - "1211:1211"solr: image: sparkfabrik/drupal-drupal-solr ports: - "8983:8983"

docker-compose-yml

Page 35: Docker for developers

DOCKER COMPOSE DEMO

Page 36: Docker for developers

The Docker ecosystemWhen 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: https://www.docker.com/products/overview

Page 37: Docker for developers

Top Related