73
@ndeloof

Dockers zero to hero

Embed Size (px)

DESCRIPTION

présentation de l'utilisation de Docker, du niveau 0 "je joue avec sur mon poste" au niveau Docker Hero "je tourne en prod". Ce talk fait suite à l'intro de @dgageot et ne comporte donc pas l'intro "c'est quoi Docker ?".

Citation preview

Page 1: Dockers zero to hero

@ndeloof

Page 2: Dockers zero to hero
Page 3: Dockers zero to hero
Page 4: Dockers zero to hero

Who  are  you  ?!

!

✓ Dev

✓ Integration/Test

✓ Acceptance / Qualif

✓ Sysdamin / Ops

Page 5: Dockers zero to hero

level 0

Page 6: Dockers zero to hero

DEV

✓Exact reproduction for target environment

!

!

!

!

Page 7: Dockers zero to hero

Not  on  Linux  ?

Page 8: Dockers zero to hero

DEV

✓Quickly get third party tools up-and-running

Page 9: Dockers zero to hero

level 1

Page 10: Dockers zero to hero

Test

✓ Define build / test infra in your SCM

Page 11: Dockers zero to hero

✓ Quickly get low-cost iso-production environment

QA

Page 12: Dockers zero to hero

level 2

Page 13: Dockers zero to hero

Dev/Opsa WAR archive is NOT what a sysadmin expect as delivery !

!

+

Page 14: Dockers zero to hero

best  DevOps  tool  so  far  (imho)

Page 15: Dockers zero to hero

Separation  of  concernInside container /var/log/myapp

!

!

!

On host /mnt/backup/myapp/log

Page 16: Dockers zero to hero

Separation  of  concerns

VOLUMEInside container /var/log/myapp

!

!

!

On host /mnt/backup/myapp/log

Page 17: Dockers zero to hero

✓ Manage hardware / infrastructure

✓ Monitoring / backups

- Not apps « implementation details »

Ops

Page 18: Dockers zero to hero

✓ Develop simplest possible solution

✓ Configuration is a runtime constraint

- Not extra-extra-flexibile application !

!

new WebServer().start(8080);

Dev

Page 19: Dockers zero to hero

level 3

Page 20: Dockers zero to hero

Continuous  Delivery

•100% Reproducible environments

« docker build . » to replace « mvn install »

Dockerfile build WAR from

sources

Dockerfile run acceptance

test suite

Dockerfile build deployable

container

docker run COPY

Page 21: Dockers zero to hero

Continuous  Delivery

Page 22: Dockers zero to hero

Pour  quoi  ?

!

✓ Cloud !

✓ devices !

✓ on-premises

more to come soon …

Page 23: Dockers zero to hero

docker  @  Cloud

•« build and deploy » PaaS !

!

!

!

•binaries-based PaaS

Page 24: Dockers zero to hero

 Google  and  Containers

“   Everything   at   Google,   from   Search   to   Gmail,   is  packaged  and  run  in  a  Linux  container.  !Each   week   we   launch   more   than   2   billion   container  instances  across  our  global  data  centers,  and  the  power  of   containers   has   enabled   both   more   reliable   services  and  higher,  more-­‐efficient  scalability.  “

http://googlecloudplatform.blogspot.fr/2014/06/an-update-on-container-support-on-google-cloud-platform.html

Page 25: Dockers zero to hero

Compute Engine

your VM

Managed VM

your docker image

AppEngine runtime

your app

Google  Managed  VMflexibility management

Page 26: Dockers zero to hero

 Bonus

Code gde-in

Page 27: Dockers zero to hero

level 4

Page 28: Dockers zero to hero

New architectures

Page 29: Dockers zero to hero

Diviser  pour  mieux  régnerStop the monolithes ! !

!

!

!

!

!

!

Page 30: Dockers zero to hero

Diviser  pour  mieux  régnerembrace Micro-services ‣ « the unix way »  ‣ domain focussed ‣ quick release cycles ‣ segregate resources !

!

http://yobriefca.se/blog/2013/04/29/micro-service-architecture/

!

Page 31: Dockers zero to hero

Micro-­‐service  avec  Docker

LINK

Page 32: Dockers zero to hero

host

sample  :  syslog

http://jpetazzo.github.io/2014/08/24/syslog-docker/

rsyslog

/dev/log

/tmp/syslogdev

logger "hello"

/dev/log

Page 33: Dockers zero to hero

durée  de  vieUn serveur ou une VM : des mois, voir plus !

Un (ou des) containeur(s) : parfois juste quelques minutes !

Page 34: Dockers zero to hero

Immutable  infrastructures

Page 35: Dockers zero to hero

Upgrades

!

Upgrade applicatif = build d’une nouvelle image

Page 36: Dockers zero to hero

What  about  CM  ?

Page 37: Dockers zero to hero

pimp  my  Dockerfile

Dockerfile BUILD chef-solo

Dockerfile COPY /cookbooks

Page 38: Dockers zero to hero

Orchestrate  Docker

load balancer

webapp

database replica

webapp

monitoring

cache- hosts: web sudo: yes tasks: - name: run tomcat servers docker: image=webapp ports=8080

Page 39: Dockers zero to hero

level 5

Page 40: Dockers zero to hero

En PROD si, si

Page 41: Dockers zero to hero

Ops  is  cool  now  !

#o

Page 42: Dockers zero to hero

#Sexists  you  said  ?

Page 43: Dockers zero to hero

Système hôte minimaliste (160Mb RAM) cluster-ready service discovery etcd cgroup + systemd boot in ~ seconds

CoreOS

Page 44: Dockers zero to hero

Apache  Mesos

Page 45: Dockers zero to hero

schedule state N replicas for a service pod = containers tied together service discovery & routage !

Kubernetes

Page 46: Dockers zero to hero
Page 47: Dockers zero to hero

and  (lots)  more  «  orchestration  »

Kubeletmaestro-ng

Shipper

FleetHellios

Centurion

Page 48: Dockers zero to hero

images: - name: jenkins_master source: ryfow/jenkins:0.2 type: Default ports: - host_port: '9080' container_port: '8080' proto: TCP volumes: - host_path: "/var/jenkins" container_path: "/var/jenkins_home" - name: jenkins_slave_1 source: ryfow/docker-jenkins-slave:0.2 type: Default links: - service: jenkins_master alias: jenkins environment: - variable: SLAVE_NAME value: slave1

{ "containers":[ { "name":"rockmongo", "count":1, "image":"openshift/centos-rockmongo", "publicports":[{"internal":80,"external":6060}], "links":[{"to":"mongodb"}] }, { "name":"mongodb", "count":1, "image":"openshift/centos-mongodb", "publicports":[{"internal":27017}] } ] }

name: demo registries: my-private-registry: registry: https://my-private-registry/v1/ ships: vm1.ore1: {ip: c414.ore1.domain.com} vm2.ore2: {ip: c415.ore2.domain.com, docker_port: 4243} services: zookeeper: image: zookeeper:3.4.5 instances: zk-1: ship: vm1.ore1 ports: {client: 2181, peer: 2888, leader_election: 3888} volumes: /var/lib/zookeeper: /data/zookeeper limits: memory: 1g cpu: 2

Page 49: Dockers zero to hero

Distribute  Docker  images

•DockerHub private registry

•Run your own internal registry (docker image)

•Docker load/save with CM

•Dogistry / s3

Page 50: Dockers zero to hero

Monitoring

•collect cgroup metrics

•cAdvisor

•dedicated docker plugin

LogScape

Page 51: Dockers zero to hero

What  about  Data  ?

Page 52: Dockers zero to hero

flocker

Page 53: Dockers zero to hero

Container  live  migration

Page 54: Dockers zero to hero

level 5

Page 55: Dockers zero to hero

security

Page 56: Dockers zero to hero

container  securityContainers are NOT secured !

!

!

!

!

!

http://blog.docker.com/2014/07/new-dockercon-video-docker-security-renamed-from-docker-and-selinux/

Page 57: Dockers zero to hero

do  you  care  ?Treat containers like regular services !

✓ drop privileges as soon as possible

✓ run as non-root as much as possible

✓ treat root within container as root on host

✓ don’t run untrusted container

Page 58: Dockers zero to hero

drop  capabilitiescapabilities - overview of Linux capabilities

!Description

!For the purpose of performing permission checks, traditional UNIX implementations distinguish two categories of processes: privileged processes (whose effective user ID is 0, referred to as superuser or root), and unprivileged processes (whose effective UID is nonzero). Privileged processes bypass all kernel permission checks, while unprivileged processes are subject to full permission checking based on the process's credentials (usually: effective UID, effective GID, and supplementary group list).

!Starting with kernel 2.2, Linux divides the privileges traditionally associated with superuser into distinct units, known as capabilities, which can be independently enabled and disabled. Capabilities are a per-thread attribute.

!CAP_NET_ADMIN, CAP_SYS_ADMIN, …

Page 59: Dockers zero to hero

User  Name  SpaceMap non root user to root within container

Page 60: Dockers zero to hero

AppArmor  /  SELinux

http://stopdisablingselinux.com/

Page 61: Dockers zero to hero

Multi  Category  Security  (MCS)Protect containers from each other

Page 62: Dockers zero to hero

level 42

DockerHJero

Page 63: Dockers zero to hero

what’s next

Page 64: Dockers zero to hero

disclaimer

Page 65: Dockers zero to hero

de  facto  Standard  Adoption both for Cloud and on-premises !

!

!

!

!

Page 66: Dockers zero to hero

ExtensibilityAlt. backends (AUFS is not an approved linux patch) ‣ devicemapper ‣ BTRFS ‣ ZFS ‣ …

!

Alt. implementations ‣ Solaris Zones ‣ BSD Jails

Page 67: Dockers zero to hero

Tooling

Page 68: Dockers zero to hero

Orchestration

Page 69: Dockers zero to hero

securitysignature & authorization

Page 70: Dockers zero to hero
Page 71: Dockers zero to hero

Config  ManagementChef/Puppet/Salt/Ansible vs Docker

Page 72: Dockers zero to hero
Page 73: Dockers zero to hero

Q?