Docker
Docker est une plateforme de virtualisation légère permettant de créer, déployer et exécuter des applications dans des conteneurs. Un conteneur regroupe tout le nécessaire pour exécuter une application : code, bibliothèques, dépendances et configurations. Contrairement aux machines virtuelles, les conteneurs partagent le noyau du système hôte, ce qui les rend plus légers et plus rapides.
Images
Construire une image (via Dockerfile
)
docker build -t <nom-image> .
Voir les images disponibles
docker images
Effacer une image
docker rmi -f <nom-image>
Lancer une image dans un containeur
# exemple pour une app flask:
docker run -d -p 80:5000 <nom-image>
Containers
Voir les conteneurs en cours
docker ps
Arrêter un conteneur
docker stop <nom-container>
Effacer un conteneur
docker rm <nom-container>
Remise à zéro des containers, des images et des volumes
sudo docker system prune -a --volumes
Créer des containeurs
docker pull nom_du_package:tag(version)
exemple: docker pull nginx:1.22-alpine
ou directement :
docker run -d -p 8080:80 nginx:1.22-alpine
-d (option) pour "detached"
-p (port)
Dockerfile
Un Dockerfile est un fichier texte qui contient les instructions nécessaires pour construire une image Docker. Il décrit les étapes de création de l'environnement d'exécution d'une application, comme la base d'image à utiliser, les dépendances à installer et les commandes à exécuter. Une fois le Dockerfile rédigé, la commande docker build
permet de générer l'image correspondante.
"Dockerfile" doit être à la racine du projet,
- exemple de Dockerfile pour une application node js :
FROM node:19-alpine
COPY package.json /app/
COPY src /app/
WORKDIR /app
RUN npm install
CMD ["node", "server.js"]
- Build des images docker :
docker build -t my-app:1.0 .
-t : titre:tag
. : path
Voir les containers en cours
docker ps --all
Explorer un container
docker exec -it <id_ou_nom_du_container> bash
Dockerfile exemple
FROM node:12-alpine
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
Ensuite, lancer le build
> docker build -t myApp
Exemple de container avec volume de données hors container
docker run --nama myMongo -v /my/workdir/data:/data/db -d mongo:
Docker compose
Docker Compose est un outil qui facilite la gestion de configurations multi-conteneurs. Grâce à un fichier docker-compose.yml
, il permet de définir et d'orchestrer plusieurs services Docker, leurs réseaux et volumes associés. La commande docker-compose up
permet de lancer l'ensemble des services définis, simplifiant ainsi le déploiement d'applications complexes.
(isolation réseau : les containers peuvent se voir entre eux)
Gérer l’application :
docker-compose up
docker-compose down
Exemple de Docker compose :
services:
db:
build: aci-demo/db
images: gtardif/sentences-db
service1:
container_name: words
image: gtardif/sentence-api
ports:
- "8080:8080"
web:
image: nginx
volumes:
- ./static:/usr/share/nginx/html
ports:
- "80:80"