Slide 1

Slide 1 text

DOCKER HOME

Slide 2

Slide 2 text

ARGOMENTI DEL GIORNO Cos'è Docker (ma in generale i container) Casi d'uso ed ecosistema

Slide 3

Slide 3 text

Luigi Maselli Fullstack developer web: web: twitter: @grigi0 https://grigio.org https://corso-javascript.it

Slide 4

Slide 4 text

I ❤ configure Linux but...

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Cosa sono i Linux/* Containers (es. Docker, LXC, rkt)?

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

LIMITAZIONI E DIFFERENZE CON VMS Sandbox per processi in esecuzione Partenza istantanea Kernel, architettura, fs, .., dell' Host Stateless (o per lo meno lo stato è esplicito)

Slide 10

Slide 10 text

PRIMA.. PROXMOX (OPENVZ)

Slide 11

Slide 11 text

BIG PICTURE "OPEN CLOUD" > SERVER Aggiornamenti istantanei, atomici Build ripetibili: stack + myapp + config + data = WIN! Astrazione "multi computer" indipendente dal cloud provider Autoscaling per gestire picchi sul cloud più economico Allocare app su nodo con caratteristiche specifiche (es EU+SSD+REPLICA2)

Slide 12

Slide 12 text

DOCKER (PER IMPARARE AD USARE LINUX IN SANDBOX)

Slide 13

Slide 13 text

docker pull ubuntu:15.04 15.04: Pulling from library/ubuntu 9502adfba7f1: Pull complete 4332ffb06e4b: Pull complete 2f937cc07b5f: Pull complete a3ed95caeb02: Pull complete Digest: sha256:2fb27e433b3ec.. Status: Downloaded newer image for ubuntu:15.04 docker run -ti --rm ubuntu:15.04 root@009b5007de75:/# echo "ciao ne!" > /tmp/prova.txt root@009b5007de75:/# exit # (altro terminale) docker diff 009b5007de75 C /tmp A /tmp/prova.txt docker diff 009b5007de75 Error response from daemon: No such container: 009b5007de7

Slide 14

Slide 14 text

NON SOLO UBUNTU (DEBIAN, REDHAT,..) docker images ubuntu 15.04 ... 131.3 MB debian 8 ... 125.1 MB busybox latest ... 2.43 MB gliderlabs/alpine 3.1 ... 5.026 MB

Slide 15

Slide 15 text

DOCKERFILE, LA PROPRIA RICETTA FROM alpine:3.2 MAINTAINER Luigi Maselli grigio.org RUN apk add --update pm-utils nodejs && \ rm -rf /var/cache/apk/* ADD ./app.js / EXPOSE 8080 CMD ["node", "app.js"] docker build -t grigio/web-pm-suspend .

Slide 16

Slide 16 text

ESECUZIONE APP docker run --privileged --rm -p 9000:8080 --name web-pm-suspend -t grigio/web

Slide 17

Slide 17 text

E SE CI FOSSE IL DB? DOCKER-COMPOSE web: build: . environment: - HOSTNAME=demo.corso-javascript.it # exampleapp_db_1 generated by docker-compose - MONGOURL=mongodb://exampleapp_db_1:27017/example_app links: - db db: image: mongo volumes: - db:/data/db docker-compose up - d

Slide 18

Slide 18 text

Demo docker ps docker rm -f dockerui && docker run -d --name=dockerui --privileged -p 9000:9000 -v / # dentro progetto docker-compose up -d

Slide 19

Slide 19 text

RISORSE https://docs.docker.com/linux/step_one/ https://github.com/grigio/docker-apps https://github.com/corso-javascript/docker-compose- nginx-nodejs

Slide 20

Slide 20 text

RECAP Architettura stateless (o quasi) Automatizza il più possibile Profit! Senza sorprese

Slide 21

Slide 21 text

GRAZIE!