Gildas Garcia

Développeur chez marmelab

Introduction à Docker

Problématiques

Récupération d'un projet existant

Récupérer le projet lui même

Installer les différentes librairies/outils nécessaires

Attention aux versions !

Développement de plusieurs applications en parallèle

Cohabitation des différentes versions des librairies/outils

Difficultés pour passer d'une application à l'autre

Architecture complexe

Multiples APIs (Microservices)

Nombreux services (Mongo, Redis, Elasticsearch, etc.)

Plusieurs frontends

Docker

Une plateforme de virtualisation par conteneurs

Performances natives

Isolation des conteneurs

Image

Instantané d'un système d'exploitation

Une image peut hériter d'une autre: composition

Facilité de mutualisation

Conteneur

Instance active d'une image

Isolé de l'hôte (mais peut fournir des services: application, base de données, etc)

Isolé des autres conteneurs (mais peut communiquer avec eux)

Accès limité et configurable aux resources de l'hôte

En pratique

Mise en place d'environnements isolés

Architecture en microservices facilitée

Déploiements simplifiés ?

Gestion de multiples images

Plusieurs commandes à lancer pour exécuter tous les conteneurs nécessaires à une application.

Docker-compose

Définit et exécute des applications composées de plusieurs conteneurs

Permet de mettre en place un environnement complet en une commande

Procédure

Un fichier de configuration en YAML définissant chaque conteneur et ses liens avec les autres conteneurs

Gestion simplifiée des processus

docker-compose up        
docker-compose ps
docker-compose stop

Demo

Best practices

Utiliser des images de base optimisées telles qu'Alpine pour réduire la taille des vos images

Eviter de lancer plusieurs commandes séparées dans un DockerFile: préférer les &&

Chaque commande crée une version de l'image: espace disque !

Conteneurs stateless: monter des volumes pour la persistence des données.

Docker supprime les volumes non utilisés.

Centraliser les logs avec syslog et éventuellement docker-syslog (Logly)

Questions ?

deck

By Gildas Garcia

deck

  • 625