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
VM vs. Docker
Dépot officiel
Dépots privés
Docker hub privé, AWS...
docker run -d --name some-ghost -e url=http://localhost:3001 -p 3001:2368 ghost
Voir les containeurs lancés :
docker ps
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
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
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
Pour composer son application en local
Lancer un docker-compose :
docker-compose up
En production, utiliser un orchestrateur plus poussé pour l'auto scaling / monitoring / gestion des erreurs ....
Exemples :