Тарас Кирилюк — docker basics. how-to for drupal developers

34
basics. How-to For Drupal devs

Upload: ledc-2016

Post on 15-Apr-2017

126 views

Category:

Internet


3 download

TRANSCRIPT

Page 1: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Docker basics.How-to For Drupal devs

Page 2: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Hi @here!I am Taras KyryliukI am here because I have been

using Docker for almost a Year and

have something to say about it

2

Disclaimer: I am a Drupal developer and automation maniac

Page 3: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Overview

▹ Software isolation

▹ Introducing Docker

▹ Docker in Drupal development

3

Page 4: Тарас Кирилюк — Docker basics. How-to for Drupal developers

1.Software isolation

4

Page 5: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Why we need Software Isolation?

Starting from the assumption that software will always have bugs, we need a way to isolate and neutralize the effects of the bugs…

© internet

5

Page 6: Тарас Кирилюк — Docker basics. How-to for Drupal developers

6 Virtualization

Operating system-level

Containers

OpenVZ, Solaris Zones, lxc, libcontainer

Hardware-level

Virtual machines

KVM, Xen, VMware, VirtualBox, xhyve

Page 7: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Operating system-level virtualization - Containerisation

▹ Limited overhead▹ Do not require a hypervisor layer▹ Allow a greater density of containers to run on a host▹ Can be complex, hard to set up, and difficult to

manage and automate▹ Can run the same or a similar guest operating system

as the host machine

7

Page 8: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Containerisation

8

Page 9: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Hardware virtualization

▹ Large overhead because of hypervisor layer▹ Easy to run and manage▹ Can run any operating system

9

Page 10: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Hardware virtualization

10

Page 11: Тарас Кирилюк — Docker basics. How-to for Drupal developers

11

2. Introducing Docker

Page 12: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Docker is an open-source engine that automates the deployment of applications

into containers.

12

Page 13: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Docker containers wrap a piece of software in a complete filesystem that

contains everything needed to run: code, runtime, system tools, system

libraries – anything that can be installed on a server. This guarantees that the

software will always run the same, regardless of its environment.

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

13

Page 14: Тарас Кирилюк — Docker basics. How-to for Drupal developers

▹ The Docker client and server

▹ Docker Images

▹ Registries

▹ Docker Containers

14

Docker components

Page 15: Тарас Кирилюк — Docker basics. How-to for Drupal developers

15

Docker architecture

Page 16: Тарас Кирилюк — Docker basics. How-to for Drupal developers

“Images are the building blocks of the Docker world.”https://www.dockerbook.com

Ways to create images:▹ Building an image from a Dockerfile

▹ Updating and committing an image

Docker images16

Page 17: Тарас Кирилюк — Docker basics. How-to for Drupal developers

17

Building an image from a Dockerfile

Page 18: Тарас Кирилюк — Docker basics. How-to for Drupal developers

18

Building an image from a Dockerfile

$ docker build -t tutorial/nginx .

Page 19: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Updating and committing an image

Run container:$ docker run -t -i training/sinatra /bin/bashInstall what you need:$ root@0b2616b0e5a8:/# apt-get install -y ruby2.0-dev$ root@0b2616b0e5a8:/# gem2.0 install jsonCommit changes:$ docker commit -m "Added json gem" -a "Kate Smith" 0b2616b0e5a8 ouruser/sinatra:v2

https://docs.docker.com/engine/tutorials/dockerimages/

19

Page 20: Тарас Кирилюк — Docker basics. How-to for Drupal developers

▹ Docker Hub (public and private repositories)

▹ Own private registry

▹ Hosted private registry

Docker registries20

Page 21: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Run first container21

Page 22: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Container ports magic22

Host OS

8080

Container with Nginx

80

Page 23: Тарас Кирилюк — Docker basics. How-to for Drupal developers

3. Docker in Drupal developmentWhat problems we can solve using it.

23

Page 24: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Docker use cases

▹ Use container as a Service

▹ Use container as a tool

▹ Run one host Drupal project with Docker Compose

▹ Run own cloud with Docker Swarm

24

Page 25: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Container as a Service(MySQL as an example)

Run:$ docker run -d --name=example-mysql --env="MYSQL_ROOT_PASSWORD=mypassword" mysql

Get IP:$ docker inspect example-mysql

Install Mysql Client:$ apt-get install mysql-client

Profit:$ mysql -uroot -pmypassword -h 172.17.0.20 -P 3306mysql>

25

http://severalnines.com/blog/mysql-docker-containers-understanding-basics

Page 26: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Container as a Service(MySQL as an example)26

http://severalnines.com/blog/mysql-docker-containers-understanding-basics

Page 27: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Use container as a tool(PHPUnit as an example)27

https://hub.docker.com/r/phpunit/phpunit/

cd to folder with tests and Run:

$ docker run -v $(pwd):/app --rm phpunit/phpunit run

Profit!▹ No need to install▹ Choose any version▹ Can use different versions for different projects

Page 28: Тарас Кирилюк — Docker basics. How-to for Drupal developers

DEV-STAGE-PROD env with Docker Compose

▹ Compose is a tool for defining and running

multi-container Docker applications.

▹ With Docker Compose, we define a set of

containers to boot up, and their runtime

properties, all defined in a YAML file.

28

Page 29: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Exampledocker-compose.yml

29

Page 30: Тарас Кирилюк — Docker basics. How-to for Drupal developers

DEV-STAGE-PROD env with Docker ComposeYou should have set of Compose-files for different environments.

▹ docker-compose.yml▹ docker-compose.override.yml▹ docker-compose.dev.yml▹ docker-compose.ci.yml▹ docker-compose.prod.yml

Run site with different commands.

Local:$ docker-compose up -dDev: $ docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d

See more: https://docs.docker.com/compose/extends/

30

Page 31: Тарас Кирилюк — Docker basics. How-to for Drupal developers

Own cloud with Docker Swarm mode

▹ Since Docker 1.12 it supports clustering out of the box

▹ It turns a pool of Docker hosts into a single virtual Docker host

More: https://docs.docker.com/engine/swarm/

31

Page 32: Тарас Кирилюк — Docker basics. How-to for Drupal developers

By the way!You can forget about server provisioning!

All you need is Docker installed on any Linux distro!

32

Page 33: Тарас Кирилюк — Docker basics. How-to for Drupal developers

33

Questions?

Page 34: Тарас Кирилюк — Docker basics. How-to for Drupal developers

THANK YOU! You can find me at:

taras.kiriluk

[email protected]

34