Présentation

Docker est un outil qui peut empaqueter une application et ses dépendances dans un conteneur virtuel, qui pourra être exécuté sur n'importe quel serveur Linux

Objectifs

  • Pas de dépendances
  • Isolation

VM vs. Docker

Avantages

  • Scalable
  • Portable
  • Meilleures performances
  • Facilité de déploiement

Docker Registry

Dépot officiel

Dépots privés

Docker hub privé, AWS...

Exemples d'image

  • Une Debian 8
  • Un Serveur Apache
  • Un Serveur postgresql avec postgis
  • Un blog
  • Un logiciel en ligne de commande

Comment ça marche

Images et containers

Un container est l'instance d'une image

Lancement d'un container

docker run -d --name some-ghost -e url=http://localhost:3001 -p 3001:2368 ghost

Voir les containeurs lancés :

docker ps

Options de 'docker run'

docker run -it debian

Permet de se connecter à la sortie/entrée stardard

Permet de binder un volume

docker run -v /home/stephane/dev/monblog:/var/www nginx

Permet de binder un port

docker run -p 8080:80 nginx

Permet de supprimer automatiquement le container à la fin

docker run --rm apache2

Permet de passer des variables d'environnement

docker run -e HTTPS=true nginx

Création d'une image docker

Dockerfile

FROM node:12.2.0

COPY package.json package.json
RUN npm install

COPY src src
COPY tsconfig.json tsconfig.json
COPY tslint.json tslint.json
COPY angular.json angular.json

RUN npm run sass
RUN ng build --prod client
RUN ng build --prod admin

COPY server.js server.js

CMD node server.js

Exemple pour une app angular

Création de l'image

Build :

docker build . -t wikipredict

Execution :

docker run -p 80:80 706247672606.dkr.ecr.eu-west-3.amazonaws.com/wikipredict:latest

Hébergement de l'image sur AWS registry :

docker push 706247672606.dkr.ecr.eu-west-3.amazonaws.com/wikipredict:latest

Assemblage et orchestration

Un container héberge une et une seule app

Docker compose

Pour composer son application en local

Lancer un docker-compose :

docker-compose up

Plus loin dans l'orchestration

En production, utiliser un orchestrateur plus poussé pour l'auto scaling / monitoring / gestion des erreurs ....

Exemples :

  • AWS ECS
  • Docker swarm
  • Kubernetes

Docker

By doelia

Docker

  • 563