Construit une image Docker à partir du Dockerfile du dossier courant et lui donne le nom (tag) node-img.
$ docker build -t node-img .
$ docker image ls
-d: Lance le conteneur en arrière-plan (mode détaché)-p 4000:80: Redirige le port 4000 de votre machine vers le port 80 du conteneur--name node-app: Nomme le conteneurnode-appnode-img:latest: Utilise l'imagenode-imgversionlatest
$ docker run -d -p 4000:80 --name node-app node-img:latest
L’option --rm dans la commande docker run sert à supprimer automatiquement le conteneur dès qu’il s’arrête ou termine son exécution.
$ docker run --rm -d -p 4000:80 --name node-app node-img:latest
$ docker stop node-app
$ docker ps -a
# => il n'y a aucun conteneur "node-app" arrêté ou existant, car il a été supprimé automatiquement grâce à l'option --rm.
Pour entrer dans votre conteneur en mode interactif (s’il tourne en arrière-plan) :
$ docker exec -it node-app sh
Pour entrer dans votre conteneur en mode interactif au moment de son lancement:
$ docker run -it -p 4000:80 --name node-app node-img:latest sh
$ doker ps
$ docker container ls
La méthode recommandée pour arrêter un conteneur en douceur:
$ docker stop <ID-CONTAINER>
Une solution de dernier recours pour forcer l’arrêt immédiat:
$ docker kill <ID-CONTAINER>
Pour forcer l’arrêt de tous les conteneurs en cours, on peut combiner docker kill avec la liste des conteneurs actifs :
$ docker kill $(docker ps -q)
$ docker rmi <IMAGE_ID or IMAGE_NAME>
Lister tous les conteneurs (y compris les arrêtés)
$ docker ps -a
$ docker rm <CONTAINER_ID or CONTAINER_NAME>
docker run permet de créer un nouveau conteneur à partir d’une image.
Pour démarrer un ou plusieurs conteneurs Docker qui sont actuellement arrêtés, sans en créer de nouveaux, il faut utiliser la commande docker start.
- Utilisez
docker startpour relancer un conteneur stoppé (STATUS => Exited). - Utilisez
docker execpour interagir ou diagnostiquer un conteneur déjà en fonctionnement (STATUS => Up).
$ docker build -t node-img .
$ docker run -d -p 3000:80 --name node-app node-img:latest
$ docker stop node-app
$ docker start node-app
La commande docker attach permet de connecter ton terminal aux flux d’entrée (STDIN), de sortie (STDOUT) et d’erreur (STDERR) d’un conteneur Docker déjà en cours d’exécution.
$ docker build -t node-img .
# attach mode
$ docker run -p 3000:80 --name node-app node-img:latest
# => voir ce qui se passe à l’intérieur, comme si tu étais devant son terminal.
# (c’est-à-dire la sortie standard – STDOUT – du processus principal défini par la commande CMD ou ENTRYPOINT du Dockerfile).
$ docker build -t node-img .
$ docker run -d -p 3000:80 --name node-app node-img:latest
# attach mode
$ docker attach node-app
# => la sortie standard – STDOUT – du processus principal défini par la commande CMD ou ENTRYPOINT du Dockerfile
Tu peux également suivre les logs d’un conteneur en temps réel avec la commande suivante :
$ docker logs -f node-app
Pour tout conteneur à l’arrêt, tu peux le redémarrer de cette façon tout en affichant sa sortie standard (stdout) :
# attach mode
$ docker start -a node-app
Pour lancer un conteneur Docker avec des variables d’environnement, on utilise l’option -e (ou --env) dans la commande docker run. Cela permet de définir des paires clé-valeur accessibles à l’intérieur du conteneur.
$ docker run -p 3000:80 --name node-app node-img
Ici, le port 80 du conteneur est exposé et mappé sur le port 3000 de l’hôte. La variable PORT est définie dans l’image Docker (via ENV PORT=80 dans le Dockerfile).
$ docker run -p 3000:88 -e PORT=88 -e VAR_1=var_1 --name node-app node-img
-e PORT=88: remplace la valeur par défaut dePORTpar 88 dans le conteneur.-e VAR_1=var_1: ajoute une variable d’environnement supplémentaire.
Fichier file.env :
PORT=88
VAR_1=var_1
Commande pour lancer le conteneur avec ce fichier :
$ docker run -p 3000:88 --env-file ./file.env --name node-app node-img
FROM node:current-alpine3.22
ARG DEFAULT_PORT=80
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
ENV PORT=$DEFAULT_PORT
EXPOSE $PORT
CMD ["node", "server.js"]$ docker build -t node-img .
$ docker run --rm -p 3000:80 --name node-app node-img:latest
- Ici, le port par défaut est 80 (défini par
ARG DEFAULT_PORT=80), donc le conteneur écoutera sur le port 80.
$ docker build --build-arg DEFAULT_PORT=88 -t node-img .
$ docker run -p 3000:88 --name node-app node-img:latest
- Ici, le port d’écoute du conteneur sera 88, car la valeur de l’argument de build a été surchargée lors du build.
ARGpermet de définir des variables uniquement disponibles pendant la construction de l’image (build-time).- Tu peux fournir une nouvelle valeur à un argument avec l’option
--build-arglors dudocker build.
Résumé :
- Utilise
ARGpour personnaliser la construction de l’image sans modifier le Dockerfile. - Utilise
--build-argpour passer des valeurs au moment du build. - Utilise
ENVpour que les variables soient disponibles dans le conteneur à l’exécution. - Les arguments de build sont très utiles pour rendre tes images Docker plus flexibles et réutilisables, tout en évitant de "figer" des valeurs dans le Dockerfile.