Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes::...

77
:: @CNRS Des containers de la cale au pont

Transcript of Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes::...

Page 1: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: @CNRSDes containers de la cale au pont

Page 2: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Nicolas MULLER

13 ans de BTPMembre MARSJUGMembre LAB-AIXpérimentation

Page 3: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Plan de la soirée

● Once upon a time...● Installation + distribution● Interconnexion de containers● Live demos

○ Tomcat dream architecture○ Docker compose○ Docker machine

● Feedback

Page 4: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Docker :: Qui a déjà joué avec ?

Page 5: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

About Docker

● Fondé en 2009● Précédemment DotCloud● Docker in 2015● Deux levées de fonds

Page 6: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Pourquoi Docker ?

● L’industrie logiciel a changé● Fin des grosses applications monolithiques● Micro-services● Processus de déploiement

Page 7: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Key Rules

● Design based on Unix principles for composability and simplicity

● Emphase the ecosystem

● Do what’s best for user

Page 8: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Un problème toujours vrai en 2015

Page 9: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

La matrice de l’enfer

Page 10: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Logistique

Page 11: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME
Page 12: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME
Page 13: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME
Page 14: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME
Page 15: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Architecture

● Docker engine● Docker client● Architecture REST● Protocole HTTP(s)

Ecrit en GO

Page 16: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Docker :: Containers

● Virtualisation d’environnement d’exécution○ Processeurs○ Mémoire vive○ Réseau○ Système de fichiers

● Contraire de la virtualisation de machine

Page 17: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Full virtualization

Host hardware

Host OS

Hypervisor

Guest OS

virt.

App

1

App

2

App

3

App

1

App

2

App

3

Guest OS

virt.

VMDocker containers

Host hardware

Doc

ker E

ngin

e

App

1

App

2

App

3

App

4

App

5container

Comparaison

Kernel

Page 18: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

And the winner is...

Great isolation but overhead

Less isolation but less overhead

Conclusion

Page 19: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

What does it hide ?

Page 20: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Technologies sous-jacentes

● CHROOT● LXC● CGROUPS● Namespace

Page 21: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Previously :: JAILS / DZONE

Page 22: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Docker vs OpenVZ

● Architecture○ Docker sees a container as a application/service○ OpenVZ sees a container as a VPS

● OpenVZ ○ Template for empty linux machine○ Patched linux kernel○ SSH

Page 23: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Des processus avec des guirlandes

Page 24: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: installation

Page 25: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Installation dev

● Linux native

● Docker Toolbox○ Windows + Mac○ Toute petite VM (25 Mo)

Page 26: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Installation production

● Linux classique○ debian○ ubuntu○ centos

● Distribution dédiée○ Projet Atomic○ CoreOS○ Rancher OS

Page 27: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: Images

Page 28: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Programmation Orientée objet

● Les images sont des classes● Les containers sont les objets

● La couche reprend le concept d’héritage

Page 29: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Qu’est ce qu’une image ?

Page 30: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Différences entre images et containers

● Une image est créé :○ à partir d’un dockerfile○ à partir d’un commit d’un container

● Une image est un système de fichier en lecture seule● Un container est un ensemble de processus tournant

dans un système de fichier en lecture/écriture● Docker utilise le principe du COW pour démarrer très

vite les containers

Page 31: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: Dockerfile

Page 32: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Dockerfile exemple

Page 33: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Liste des commandes

● FROM● MAINTENER● RUN● CMD● EXPOSE● ADD● COPY

● ENTRYPOINT● VOLUME● USER● WORKDIR● ONBUILD● ENV

Page 34: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Builder son image

Pour builder l’image● docker build -t demojug/tomcat .

Pour lancer un container à partir de l’image● docker run -d demojug/tomcat● docker run -it demojug/tomcat bash

Page 35: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME
Page 36: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Best practices

● Eviter d’installer trop de chose● Au mieux un processus par container● Minimiser le nombre de couches● Utiliser .dockerignore● Depuis peu, utilisez les LABEL● NO UPGRADE / NO BOOT INIT● DIVISEZ POUR REGNER● Utilisez vos propres images !

Page 37: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: Commands

Page 38: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME
Page 39: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Liste des images

Page 40: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Recherche des images

Page 41: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Quelques commandes● docker run -d jpetazzo/clock● docker ps● docker ps -lq ● docker logs --tail 3 <containerId>● docker logs --tail 1 --follow <containerId>● docker kill $(docker ps -a -q)● docker rmi $(docker images -q)

Page 42: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Télécharger des images

Explicitement : docker pull

Implicitement : docker run

Page 43: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: volumes

Page 44: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME
Page 45: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: network

Page 46: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Isolation by designeach container runs isolated

Container WEB Container DB

TOMCAT 8080 MYSQL 3306

Bridge docker0

Hôte

Page 47: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Container WEB Container DB

TOMCAT 8080 MYSQL 3306

Bridge docker0

Hôte

8080 exposé 3306 exposé

+ Dockerfile : EXPOSE <port>+ docker run … p <port>

Exposition ports

Page 48: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Lien entre containers

Container WEB Container ‘db’

TOMCAT 8080 MYSQL 3306

Bridge docker0

Hôte

ENV VARIABLE

DBALIAS_PORTDBALIAS_ADDRDBALIAS_TCP

DBALIAS_PROTO…...

Exemple : Docker run … -link db:dbalias

LINK

Page 49: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Mapping de ports

Container WEB Container ‘db’

TOMCAT 8080 MYSQL 3306

Bridge docker0

HôteIP_INTERFACE

Réseau externe

docker run … -p 80:8080

Page 50: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Options :: réseau

docker run … -- net = bridgedocker run … -- net = hostdocker run … -- net = CONTAINER_IDdocker run … -- net = none

Page 51: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: Cycle de vie

Page 52: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Host 2 OS

Docker EngineDocker Engine

Host 1 OS

Source code

repository Con

t A

Build

Push

SearchPull

Run

Dockerfile for A

Dockerimage

registry

Image A

CRÉATION, GESTION ET DEPLOIEMENT

Page 53: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Système de cache

● RUN apt-get install -y curl wget● RUN apt-get install -y wget curl

● RUN apt-get update● ADD / COPY

docker build --no-cache ...

Page 54: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: plus loin

Page 55: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Docker :: everywhere

Windows ServerContainer Support

Docker Engine

Linux ContainerSupport (LXC)

Docker Engine

Windows Server Linux

Docker Client

Page 56: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Chrome in Docker

Page 57: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

https://github.com/jpetazzo/dind

Page 58: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Dev / Test

● Utiliser une CI pour construire les images● Utiliser les containers pour

○ Jouer les tests unitaires○ Recréer l’environnement d’intégration pour les tests

● Bénéfices○ Avoir la garantie d’un environnement propre

à chaque lancement des tests○ Avoir la possibilité de jouer toute l’intégration dans

un seul container

Page 59: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: limites

Page 60: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Limites :: production

Images buildingGarbage collectionLoggingFilesystemsSecurityImage layer and transportation

Page 61: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: ComposeMulti-container application into a single file

Page 62: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Where to use it ?

Page 63: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

docker-compose [command] --help

Page 64: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

mysqldb: image: mysql:latest environment: MYSQL_USER: mysql MYSQL_PASSWORD: mysql MYSQL_DATABASE: petclinic MYSQL_ROOT_PASSWORD: supersecret volumes: - datadir:/var/lib/mysql

mytomcat: build: tomcat8 environment: CATALINA_OPTS: "-Xmx1024m" volumes: - webapps:/tomcat/webapps links: - mysqldb:webdb ports: - 8080:8080

docker-compose.yml

Page 65: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Commands

● up with daemon

● stop / start

● logs

Page 66: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: Tomcat

Page 68: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME
Page 69: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: Machine

Page 70: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Créer une machine locale

Page 71: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Commandes

Page 72: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: Swarm

Page 73: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Utiliser swarm avec machinedocker run swarm create5b7220ee08396d85d08dd9516946b226

docker-machine create -d virtualbox --swarm --swarm-master --swarm-discovery token://5b7220ee08396d85d08dd9516946b226 head

docker-machine create -d digitalocean --swarm --swarm-discovery token://31e61710169a7d3568502b0e9fb09d66 worker-00 docker-machine create -d azure --swarm --swarm-discovery token://31e61710169a7d3568502b0e9fb09d66 worker-01

$(docker-machine env --swarm head)

docker info

Page 74: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

:: RancherOS

Page 75: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME
Page 76: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME
Page 77: Des containers de la cale au pont · 2015-11-05 · Des processus avec des guirlandes:: installation. Installation dev Linux native Docker Toolbox ... EXPOSE ADD COPY ENTRYPOINT VOLUME

Merci