Docker from basics to orchestration (PHPConfBr2015)

86
Docker From basics to orchestration

Transcript of Docker from basics to orchestration (PHPConfBr2015)

Docker From basics to orchestration

Credits

Special thanks to all the people who made and released these awesome resources for free:◎ Presentation template by SlidesCarnival◎ Photographs by Unsplash & Death to the Stock Photo

(license)◎ Dark wood background by The pattern library

About Me

Overview

Overview

◎ Environment Issues◎ Virtualization◎ LXC◎ Docker

○ features○ demo

◎ Machine

◎ Orchestration○ tools○ demo

◎ Swarm○ demo

◎ Q&A

Environment Issues

Environment Issues

◎ substr vs mb_substr functions

Environment Issues

◎ substr vs mb_substr functions◎ short open tags: <?=

Environment Issues

◎ substr vs mb_substr functions◎ short open tags: <?=◎ syntax changes between versions: array(); e [];

Environment Issues

◎ substr vs mb_substr functions◎ short open tags: <?=◎ syntax changes between versions: array(); e [];◎ extensions that we forget to install in

production: php-memcached, redis, amqp, etc.

Environment Issues

◎ substr vs mb_substr functions◎ short open tags: <?=◎ syntax changes between versions: array(); e [];◎ extensions that we forget to install in

production: php-memcached, redis, amqp, etc.

◎ different upload file settings in different servers

Virtualization

◎ 1960 - inspired by cpu time sharing

Virtualization - History

◎ 1960 - inspired by cpu time sharing◎ IBM 370 - First instructions to support

software virtualization, CP/CMS allow running more than one instance simultaneously

Virtualization - History

◎ 1960 - inspired by cpu time sharing◎ IBM 370 - First instructions to support

software virtualization, CP/CMS allow running more than one instance simultaneously

◎ IBM z/VM - First success case, all hardware were virtualized

Virtualization - History

◎ 1960 - inspired by cpu time sharing◎ IBM 370 - First instructions to support

software virtualization, CP/CMS allow running more than one instance simultaneously

◎ IBM z/VM - First success case, all hardware were virtualized

◎ until nineties only client/server applications

Virtualization - History

◎ 1960 - inspired by cpu time sharing◎ IBM 370 - First instructions to support

software virtualization, CP/CMS allow running more than one instance simultaneously

◎ IBM z/VM - First success case, all hardware were virtualized

◎ until nineties only client/server applications◎ 2000+ - CPUs with virtualization support,

hypervisors: VMWare, Xen, KVM, VirtualBox, etc

Virtualization - History

Virtualization - Hypervisors

Virtualization - Stack

◎ Standard environment

Virtualization - Pros & Cons

◎ Standard environment

◎ Improve resources utilization

Virtualization - Pros & Cons

◎ Standard environment

◎ Improve resources utilization

◎ Easy data recovery

Virtualization - Pros & Cons

◎ Standard environment

◎ Improve resources utilization

◎ Easy data recovery

◎ If host fails all VMs crashes together

Virtualization - Pros & Cons

◎ Standard environment

◎ Improve resources utilization

◎ Easy data recovery

Virtualization - Pros & Cons

◎ If host fails all VMs crashes together

◎ Troubleshooting more difficult

◎ Standard environment

◎ Improve resources utilization

◎ Easy data recovery

Virtualization - Pros & Cons

◎ If host fails all VMs crashes together

◎ Troubleshooting more difficult

◎ Increase overhead

LXC - Linux Containers

LXC - Linux Containers

◎ Exists since Jul/2008 - Kernel 2.6.26+

LXC - Linux Containers

◎ Exists since Jul/2008 - Kernel 2.6.26+◎ Process isolation

LXC - Linux Containers

◎ Exists since Jul/2008 - Kernel 2.6.26+◎ Process isolation ◎ Network isolation

LXC - Linux Containers

◎ Exists since Jul/2008 - Kernel 2.6.26+◎ Process isolation ◎ Network isolation◎ Memory limitation

LXC - Linux Containers

◎ Exists since Jul/2008 - Kernel 2.6.26+◎ Process isolation ◎ Network isolation◎ Memory limitation◎ File system isolation

LXC - Pros & Cons

◎ Good resources isolation

LXC - Pros & Cons

◎ Good resources isolation

◎ Run as a process, a single PID is created

LXC - Pros & Cons

◎ Good resources isolation

◎ Run as a process, a single PID is created

◎ Reuse host resources (libs, kernel)

LXC - Pros & Cons

◎ Good resources isolation

◎ Run as a process, a single PID is created

◎ Reuse host resources (libs, kernel)

◎ Starts much more faster than VMs

LXC - Pros & Cons

◎ Volume share are difficult to do

◎ Good resources isolation

◎ Run as a process, a single PID is created

◎ Reuse host resources (libs, kernel)

◎ Starts much more faster than VMs

LXC - Pros & Cons

◎ Volume share are difficult to do

◎ Architecture failure may lead to chroot attack

◎ Good resources isolation

◎ Run as a process, a single PID is created

◎ Reuse host resources (libs, kernel)

◎ Starts much more faster than VMs

LXC - Pros & Cons

◎ Volume share are difficult to do

◎ Architecture failure may lead to chroot attack

◎ IO overhead

◎ Good resources isolation

◎ Run as a process, a single PID is created

◎ Reuse host resources (libs, kernel)

◎ Starts much more faster than VMs

LXC - Pros & Cons

◎ Volume share are difficult to do

◎ Architecture failure may lead to chroot attack

◎ IO overhead◎ Run on Linux hosts

only

◎ Good resources isolation

◎ Run as a process, a single PID is created

◎ Reuse host resources (libs, kernel)

◎ Starts much more faster than VMs

DOCKER

Docker

Docker

Doki =>

◎ Portable

Docker - Features

◎ Portable◎ Versionable

Docker - Features

◎ Portable◎ Versionable◎ Reusable

Docker - Features

◎ Portable◎ Versionable◎ Reusable◎ Copy-on-write

Docker - Features

◎ Portable◎ Versionable◎ Reusable◎ Copy-on-write◎ Logging

Docker - Features

◎ Portable◎ Versionable◎ Reusable◎ Copy-on-write◎ Logging◎ Image change management

Docker - Features

◎ Portable◎ Versionable◎ Reusable◎ Copy-on-write◎ Logging◎ Image change management◎ Automatic build

Docker - Features

◎ Portable◎ Versionable◎ Reusable◎ Copy-on-write◎ Logging◎ Image change management◎ Automatic build◎ Easy to share

Docker - Features

Docker - Features

◎ Private and public registry

Docker - Features

◎ Private and public registry◎ Server-client architecture

Docker - Features

◎ Private and public registry◎ Server-client architecture◎ Client consume engine API

Docker - Features

◎ Private and public registry◎ Server-client architecture◎ Client consume engine API◎ Orchestration tools (compose, swarm,volume

networks)

Docker - Features

◎ Private and public registry◎ Server-client architecture◎ Client consume engine API◎ Orchestration tools (compose, swarm,volume

networks)◎ Always innovating

Docker - VM Comparison

Docker - Quick Tips

◎ It is a container not a VM

Docker - Quick Tips

◎ It is a container not a VM◎ Container images are like VM boxes

Docker - Quick Tips

◎ It is a container not a VM◎ Container images are like VM boxes◎ Images are state, container runs it

Docker - Install

◎ Follow instructions for your OS in http://docs.docker.com/installation

Docker - Install

◎ Follow instructions for your OS in http://docs.docker.com/installation

◎ Several distros supported

Docker - Install

◎ Follow instructions for your OS in http://docs.docker.com/installation

◎ Several distros supported◎ Mac OS X and Windows needs a VM to act

like a Docker host - Boot2docker

Docker - Install

◎ Follow instructions for your OS in http://docs.docker.com/installation

◎ Several distros supported◎ Mac OS X and Windows needs a VM to act

like a Docker host - Boot2docker◎ There is roadmap to run Linux container on

FreeBSD host

Docker - Install

◎ Follow instructions for your OS in http://docs.docker.com/installation

◎ Several distros supported◎ Mac OS X and Windows needs a VM to act

like a Docker host - Boot2docker◎ There is roadmap to run Linux container on

FreeBSD host◎ Windows containers running on Windows

hosts will be available on Windows Server 2016

Docker - Beggining

◎ run◎ pull◎ commit◎ push◎ exec◎ ps◎ images◎ inspect◎ rm◎ rmi

Talk is cheap, show me the code.Linus Torvalds

pull

commit

push

Docker - Images

Dockerfile

Docker - Improving

◎ Volume○ list, create, inspect

◎ Port expose and port mapping◎ Links between containers◎ Network

○ list, create,inspect, connect

Second Demo

Docker - Machine

◎ Creates virtual machines ready to run docker locally or on the cloud.

◎ drivers available:○ Amazon Web Services, Microsoft Azure, Digital

Ocean, Exoscale, Google Compute Engine,

Microsoft Hyper-V, OpenStack, Rackspace, IBM

Softlayer, Oracle VirtualBox, VMware vCloud Air,

VMware Fusion, VMware vSphere and Generic

Docker - Orchestration

◎ Docker Compose (Old FIG)

Docker - Orchestration

◎ Docker Compose (Old FIG)

Docker - Orchestration

◎ Docker Compose (Old FIG)

Docker - Orchestration

◎ Docker Compose (Old FIG) ○ Config file: docker-compose.yml○ Run: docker-compose up

Docker - Orchestration

◎ Docker Compose (Old FIG) ○ Config file: docker-compose.yml○ Run: docker-compose up

◎ Crane - http://getcrane.com○ Config file: crane.json or crane.yaml○ Run: crane lift

Docker - Orchestration

◎ Docker Compose (Old FIG) ○ Config file: docker-compose.yml○ Run: docker-compose up

◎ Crane - http://getcrane.com○ Config file: crane.json or crane.yaml○ Run: crane lift

◎ AZK - http://www.azk.io○ Config file: Azkfile.js○ Run: `azk agent start` and then `azk start`

Third Demo

Docker - Orchestration

◎ Docker Swarm○ Orchestrate docker hosts○ supports schedulers and node discovery services

Last Demo

Docker - Comming

◎ User namespaces

◎ Open Containers Initiative - by Linux Foundation:

https://www.opencontainers.org/

Voucher: php_conf2015

Q&A Slides

http://bit.ly/phpconfbr2015