AI Engineering Tools

Programmation

Docker

Guide consultable sur les images, conteneurs, Dockerfile, Compose, ports, volumes, journaux et problèmes courants Docker.

33 éléments

Concepts de base

Docker

Docker

docker --version

Sens

Un outil pour empaqueter et exécuter des applications dans des conteneurs isolés.

Quand l'utiliser

Utilisez-le lorsque vous souhaitez que l'application s'exécute avec les mêmes OS packages, environnement d'exécution et dépendances sur différentes machines.

Exemple

docker --version

Exemple de demande

Expliquez si ce projet peut être exécuté avec Docker.

Concepts de base

Docker daemon

Docker daemon

Impossible de se connecter au démon Docker.

Sens

Le service en arrière-plan qui construit les images et exécute les conteneurs.

Quand l'utiliser

Si les commandes Docker ne peuvent pas se connecter, Docker Desktop ou le service Docker peuvent ne pas être en cours d'exécution.

Exemple

Impossible de se connecter au démon Docker.

Exemple de demande

Vérifiez pourquoi les commandes Docker ne peuvent pas se connecter au démon.

Concepts de base

Image

Image

node:20-alpine

Sens

Un modèle réutilisable utilisé pour créer des conteneurs.

Quand l'utiliser

Les images définissent le système d'exploitation OS, l'environnement d'exécution, les bibliothèques et les fichiers d'application avec lesquels un conteneur démarre.

Exemple

node:20-alpine

Exemple de demande

Indiquez-moi quelle image de base ce Dockerfile utilise.

Concepts de base

Conteneur

Container

docker ps

Sens

Une instance en cours d'exécution ou arrêtée créée à partir d'une image.

Quand l'utiliser

Utilisez des conteneurs pour exécuter l'application, la base de données, la mise en cache ou le worker dans des environnements isolés.

Exemple

docker ps

Exemple de demande

Lister les conteneurs en cours d'exécution et expliquer ce que chacun fait.

Concepts de base

Registre

Registry

docker pull postgres:16

Sens

Un serveur où les images Docker sont stockées et téléchargées.

Quand l'utiliser

Docker Hub and private registries are used to share base images or deployable app images.

Exemple

docker pull postgres:16

Exemple de demande

Expliquer d'où cette image sera téléchargée.

Dockerfile

Dockerfile

Dockerfile

Dockerfile

Sens

Un fichier qui définit la façon de construire une image Docker.

Quand l'utiliser

Utilisez-le pour installer des dépendances, copier des fichiers d'application et définir la commande qui démarre l'application.

Exemple

Dockerfile

Exemple de demande

Lire ce Dockerfile et résumer les étapes de construction.

Dockerfile

FROM

FROM

FROM node:20-alpine

Sens

L'instruction Dockerfile qui choisit l'image de base.

Quand l'utiliser

Il détermine la couche OS de démarrage et souvent la version d'exécution.

Attention

Modifier l'image de base peut affecter les commandes disponibles, les mises à jour de sécurité et la taille de l'image.

Exemple

FROM node:20-alpine

Exemple de demande

Expliquer ce que cette image FROM inclut.

Dockerfile

WORKDIR

WORKDIR

WORKDIR /app

Sens

Définit le dossier à l'intérieur de l'image où les commandes suivantes sont exécutées.

Quand l'utiliser

Utilisez-le de sorte que les commandes COPY, RUN et CMD fonctionnent à partir d'un dossier d'application prévisible.

Exemple

WORKDIR /app

Exemple de demande

Expliquez quel dossier ce Dockerfile utilise comme répertoire de l'application.

Dockerfile

COPY

COPY

COPY package.json package-lock.json ./

Sens

Copie des fichiers du contexte de construction dans l'image.

Quand l'utiliser

Utilisez-le pour ajouter des fichiers de dépendances, du code source et des ressources statiques à l'image.

Exemple

COPY package.json package-lock.json ./

Exemple de demande

Indiquez-moi quels fichiers cette étape COPY ajoute à l'image.

Dockerfile

RUN

RUN

RUN npm ci

Sens

Exécute une commande pendant la construction de l'image.

Quand l'utiliser

Utilisez-le pour installer des paquets OS, installer des dépendances ou créer des fichiers d'application.

Attention

RUN s'exécute au moment de la construction de l'image, et non lorsque le conteneur démarre.

Exemple

RUN npm ci

Exemple de demande

Séparez les commandes de construction de l'image Docker des commandes de démarrage du conteneur dans le Dockerfile.

Dockerfile

CMD

CMD

CMD ["npm", "run", "start"]

Sens

Définit la commande par défaut qui s'exécute lorsque le conteneur démarre.

Quand l'utiliser

Utilisez-le pour démarrer le serveur web, le serveur API, le processus en arrière-plan ou le script.

Exemple

CMD ["npm", "run", "start"]

Exemple de demande

Dites-moi avec quelle commande ce conteneur démarre.

Dockerfile

EXPOSE

EXPOSE

EXPOSE 3000

Sens

Documenter le port sur lequel l'application conteneurisée est censée écouter.

Quand l'utiliser

Utilisez-le comme un indice, puis publiez le port avec docker run -p ou les ports de compose.

Attention

EXPOSE seul ne rend pas l'application accessible depuis votre navigateur.

Exemple

EXPOSE 3000

Exemple de demande

Expliquez si ce port exposé est réellement publié.

Dockerfile

Fichier .dockerignore

.dockerignore

node_modules

Sens

Un fichier qui exclut les chemins du contexte de construction de Docker.

Quand l'utiliser

Utilisez-le pour conserver les dépendances locales, la sortie de la compilation, les secrets et les fichiers temporaires en dehors de la construction de l'image.

Exemple

node_modules

Exemple de demande

Vérifiez si ce fichier .dockerignore exclut des fichiers non sécurisés ou inutiles.

Dockerfile

Contexte de construction

Build context

docker build -t my-app .

Sens

Le dossier envoyé à Docker pendant la construction de l'image.

Quand l'utiliser

Le point final dans la commande docker build signifie généralement que le dossier actuel est le contexte de construction.

Attention

Un contexte important ralentit les compilations et peut accidentellement inclure des fichiers privés.

Exemple

docker build -t my-app .

Exemple de demande

Expliquer quels fichiers sont disponibles pour cette construction Docker.

Docker Compose

Docker Compose

Docker Compose

docker compose up

Sens

Un outil pour exécuter plusieurs services Docker à partir d'un seul fichier YAML.

Quand l'utiliser

Utilisez-le pour les piles d'applications, de bases de données, de caches, de workers ou de développement local.

Exemple

docker compose up

Exemple de demande

Expliquer quels services ce fichier compose démarre.

Docker Compose

services

services

services: web: db:

Sens

Pièces d'application nommées définies dans un fichier de composition.

Quand l'utiliser

Un service web peut exécuter l'application tandis qu'un service de base de données exécute PostgreSQL.

Exemple

services: web: db:

Exemple de demande

Lister les services dans ce fichier compose et ce que chacun fait.

Docker Compose

docker compose up

docker compose up

docker compose up -d

Sens

Démarre les services définis dans un fichier de composition.

Quand l'utiliser

Utilisez l'option -d lorsque vous souhaitez que les services s'exécutent en arrière-plan.

Exemple

docker compose up -d

Exemple de demande

Démarrer les services de composition et afficher ceux qui sont en cours d'exécution.

Docker Compose

docker compose down

docker compose down

docker compose down

Sens

Arrête et supprime les conteneurs créés par la composition.

Quand l'utiliser

Utilisez-le lorsque vous avez terminé avec une pile de développement local.

Attention

Les volumes nommés restent généralement en place, sauf si vous supprimez explicitement les volumes.

Exemple

docker compose down

Exemple de demande

Arrêter cette pile de composition sans supprimer les données persistantes.

Commandes

docker build

docker build

docker build -t my-app .

Sens

Construit une image Docker à partir d'un Dockerfile et d'un contexte.

Quand l'utiliser

Utilisez-le après avoir écrit un Dockerfile ou modifié les dépendances de l'application.

Exemple

docker build -t my-app .

Exemple de demande

Construisez cette image Docker et résumez toutes les erreurs de construction.

Commandes

docker run

docker run

docker run --name my-app -p 3000:3000 my-app

Sens

Crée et démarre un conteneur à partir d'une image.

Quand l'utiliser

Utilisez-le lorsque vous souhaitez démarrer un conteneur directement sans utiliser compose.

Exemple

docker run --name my-app -p 3000:3000 my-app

Exemple de demande

Exécuter cette image et expliquer l'URL du navigateur.

Commandes

docker ps

docker ps

docker ps

Sens

Liste les conteneurs en cours d'exécution.

Quand l'utiliser

Utilisez docker ps -a lorsque vous souhaitez également afficher les conteneurs arrêtés.

Exemple

docker ps

Exemple de demande

Afficher les conteneurs en cours d'exécution et leurs ports publiés.

Commandes

docker stop

docker stop

docker stop my-app

Sens

Arrête un conteneur en cours d'exécution.

Quand l'utiliser

Utilisez-le avant de supprimer un conteneur ou de libérer un port.

Exemple

docker stop my-app

Exemple de demande

Arrêter le conteneur en utilisant le port 3000.

Commandes

docker logs

docker logs

docker logs my-app

Sens

Affiche les journaux d'un conteneur.

Quand l'utiliser

Utilisez-le lorsqu'un conteneur se termine, plante ou que l'application ne répond pas.

Exemple

docker logs my-app

Exemple de demande

Lire les journaux de ce conteneur et trouver la première erreur.

Commandes

docker exec

docker exec

docker exec -it my-app sh

Sens

Exécute une commande à l'intérieur d'un conteneur déjà en cours d'exécution.

Quand l'utiliser

Utilisez-le pour examiner les fichiers, les variables d'environnement ou les outils installés à l'intérieur d'un conteneur.

Attention

Les modifications apportées manuellement à l'intérieur d'un conteneur peuvent disparaître lorsque le conteneur est recréé.

Exemple

docker exec -it my-app sh

Exemple de demande

Ouvrir un shell dans ce conteneur et vérifier ses variables d'environnement.

Ports et réseau

ports

ports

3000:3000

Sens

Associe un port de votre machine à un port à l'intérieur du conteneur.

Quand l'utiliser

Utilisez-le de sorte qu'un navigateur puisse accéder à une application web s'exécutant à l'intérieur d'un conteneur.

Attention

Le côté gauche est le port hôte, et le côté droit est le port du conteneur.

Exemple

3000:3000

Exemple de demande

Expliquez quelle URL je devrais ouvrir pour ce paramètre de ports.

Ports et réseau

localhost dans Docker

localhost in Docker

host.docker.internal

Sens

localhost peut signifier le conteneur lui-même, et non votre machine hôte, lorsque le code s'exécute dans Docker.

Quand l'utiliser

Utilisez les noms de services dans les réseaux compose, ou host.docker.internal lorsque conteneur doit accéder à la machine hôte.

Exemple

host.docker.internal

Exemple de demande

Expliquez pourquoi localhost ne parvient pas à atteindre la base de données depuis ce conteneur.

Fichiers et données

Volume

Volume

db-data:/var/lib/postgresql/data

Sens

Docker-managed storage that can persist data outside a container's lifecycle.

Quand l'utiliser

Utilisez des volumes pour les données de base de données ou autres fichiers qui doivent survivre à la recréation du conteneur.

Attention

La suppression des volumes peut supprimer les données persistantes.

Exemple

db-data:/var/lib/postgresql/data

Exemple de demande

Indiquez-moi quels volumes de composition stockent les données persistantes.

Fichiers et données

Montage en dur

Bind mount

./src:/app/src

Sens

Connecte un dossier hôte directement à un chemin de conteneur.

Quand l'utiliser

Utilisez-le pendant le développement afin que les modifications de code sur l'hôte apparaissent à l'intérieur du conteneur.

Attention

Un montage en dur peut masquer les fichiers qui ont été copiés dans l'image au même emplacement.

Exemple

./src:/app/src

Exemple de demande

Expliquez si ce volume est un volume nommé ou un montage direct.

Fichiers et données

environnement

environment

DATABASE_URL=postgres://db:5432/app

Sens

Valeurs de configuration transmises à un conteneur.

Quand l'utiliser

Utilisez des variables d'environnement pour les URL de la base de données, les ports, les modes, les indicateurs de fonctionnalité et les paramètres d'exécution.

Attention

Ne codez pas de secrets dans des images publiques ni ne committez de valeurs de secrets réels.

Exemple

DATABASE_URL=postgres://db:5432/app

Exemple de demande

Vérifiez quelles variables d'environnement ce conteneur nécessite.

Dépannage

le port est déjà alloué

port is already allocated

Échec de la liaison à 0.0.0.0:3000 : le port est déjà alloué.

Sens

Docker cannot publish a host port because another process or container is already using it.

Quand l'utiliser

Rechercher le processus ou le conteneur utilisant le port, puis l'arrêter ou choisir un autre port hôte.

Exemple

Échec de la liaison à 0.0.0.0:3000 : le port est déjà alloué.

Exemple de demande

Rechercher ce qui utilise ce port Docker et suggérer une solution sûre.

Dépannage

le nom du conteneur est déjà utilisé.

container name is already in use

Conflit. Le nom du conteneur "/my-app" est déjà utilisé.

Sens

Un conteneur du même nom existe déjà.

Quand l'utiliser

Lister les conteneurs existants, puis les réutiliser, les supprimer ou les renommer.

Exemple

Conflit. Le nom du conteneur "/my-app" est déjà utilisé.

Exemple de demande

Résoudre ce conflit de nom de conteneur sans supprimer les données de manière inattendue.

Dépannage

Cache de construction

Build cache

docker build --no-cache -t my-app .

Sens

Docker can reuse previous build layers to make builds faster.

Quand l'utiliser

Si un changement semble ignoré, examinez l'ordre du Dockerfile ou reconstruisez sans cache comme étape de diagnostic.

Attention

L'option --no-cache peut ralentir les constructions, utilisez-la donc intentionnellement.

Exemple

docker build --no-cache -t my-app .

Exemple de demande

Expliquer si le cache de construction Docker pourrait masquer ma modification.

Sécurité

docker system prune

docker system prune

docker system prune

Sens

Supprime les données Docker inutilisées, telles que les conteneurs arrêtés, les réseaux inutilisés et les images orphelines.

Quand l'utiliser

Utilisez-le lorsque Docker utilise trop d'espace disque et que vous comprenez ce qui sera supprimé.

Attention

Avec des indicateurs supplémentaires, la fonction de suppression peut supprimer des images ou des volumes auxquels vous tenez encore.

Exemple

docker system prune

Exemple de demande

Avant de supprimer des éléments avec Docker, affichez ce qui serait supprimé et quelles données sont sûres.