Premiers Pas : Exécuter Votre Premier Conteneur Docker
Docker a révolutionné la façon dont les développeurs créent, déploient et gèrent les applications. En utilisant des conteneurs, Docker permet aux développeurs de conditionner les applications avec toutes leurs dépendances, garantissant ainsi leur exécution uniforme dans divers environnements informatiques. Dans cet article, nous vous guiderons à travers les étapes pour exécuter votre premier conteneur Docker, en explorant en profondeur les concepts, commandes et bonnes pratiques qui poseront des bases solides pour votre parcours de conteneurisation.
Qu'est-ce que Docker ?
Before diving into containerization, let’s clarify what Docker is. Docker is an open-source platform that automates the deployment, scaling, and management of applications within containerized environments. A Docker container encapsulates an application and its dependencies, allowing it to run seamlessly on any system that has Docker installed.
Key Concepts in Docker
Understanding some foundational concepts of Docker is crucial before running your first container:
Images: Docker images are read-only templates used to create containers. They contain everything needed to run an application, including code, runtime, libraries, and environment variables.
Containers: Un conteneur est une instance exécutable d'une image. Les conteneurs sont légers et conçus pour être éphémères, ce qui signifie qu'ils peuvent être créés, démarrés, arrêtés et détruits rapidement.
DockerfileUn Dockerfile est un script qui contient des instructions pour construire une image Docker. Il définit l'image de base, le code de l'application, les variables d'environnement et toutes les dépendances.
Docker Hub: Il s'agit d'un référentiel basé sur le cloud où les images Docker peuvent être stockées et partagées. Il contient une vaste bibliothèque d'images officielles qui peuvent être extraites et utilisées avec un minimum de configuration.
Prérequis
To follow along with this tutorial, you will need:
Docker installé: Ensure you have Docker installed on your machine. You can follow the installation instructions for your operating system from the official Docker documentation.
Accès à l'interface de ligne de commande (CLI): Vous devrez utiliser une interface de ligne de commande comme Terminal (macOS/Linux) ou l'Invite de commandes/PowerShell (Windows).
Step 1: Pulling a Docker Image
La première étape pour exécuter un conteneur Docker consiste à extraire (télécharger) une image depuis Docker Hub. Pour ce tutoriel, nous utiliserons l'image officielle. hello-world image, qui est une image simple conçue pour tester les installations Docker.
To pull the image, execute the following command in your terminal:
docker pull hello-worldComprendre la commande
dockerCeci est l'outil en ligne de commande pour interagir avec Docker.tirer: This command instructs Docker to download the specified image from Docker Hub.hello-worldVoici le nom de l'image que nous voulons extraire.
Une fois l'image téléchargée, vous verrez un message confirmant que l'image a été extraite avec succès.
Step 2: Running Your First Container
Maintenant que vous avez le hello-world image, it’s time to run a container based on that image. Use the following command:
docker run hello-worldQue se passe-t-il ici ?
run: This command creates and starts a container from the specified image. If the image isn’t available locally, Docker will try to pull it from Docker Hub.
When you run the command, you should see a message indicating that Docker is working correctly. The message includes information about the Docker installation and confirms that you have successfully run your first container.
Step 3: Understanding Container Lifecycle
Every Docker container has a lifecycle consisting of several states: created, running, paused, stopped, and removed. Understanding these states is crucial for managing containers effectively.
États des conteneurs
- Créé: The container has been created but is not running.
- Courir: Le conteneur est en cours d'exécution.
- Paused: The container is temporarily suspended.
- ArrêtéLe conteneur a terminé son exécution et n'est plus en cours d'exécution.
- SuppriméLe conteneur a été supprimé.
You can check the status of your containers using:
docker ps -aCette commande liste tous les conteneurs, en affichant leurs ID, noms, statuts et autres informations essentielles.
Étape 4 : Gestion des conteneurs
Arrêt d'un conteneur
Pour arrêter un conteneur en cours d'exécution, utilisez la commande docker stop command suivie de l'ID ou du nom du conteneur. Par exemple :
docker stop Supprimer un conteneur
Une fois que vous avez stoppé un conteneur, vous pouvez le supprimer avec la commande suivante :
docker rm Step 5: Running a Container with Custom Options
Pendant que vous exécutez le hello-world L'image est un bon point de départ, Docker vous permet de personnaliser le comportement à l'exécution des conteneurs via différentes options.
Exécuter un conteneur interactif
Vous pouvez exécuter un conteneur en mode interactif en utilisant le -lui drapeau. Cela est particulièrement utile pour le débogage ou lorsque vous souhaitez interagir avec une interface en ligne de commande à l'intérieur du conteneur. Par exemple, l'exécution d'un conteneur Ubuntu léger peut se faire comme suit :
docker run -it ubuntuComprendre la commande
-luiCette option combine deux options :-i(interactif) et-t(terminal), vous permettant d'interagir avec le shell du conteneur.ubuntu: Ceci spécifie l'image que vous souhaitez utiliser, dans ce cas, une image de base Ubuntu.
Après avoir exécuté cette commande, vous serez placé dans l'interpréteur de commandes du conteneur Ubuntu. Vous pouvez exécuter des commandes à l'intérieur, tout comme vous le feriez sur un système Linux régulier.
Step 6: Creating Your Own Dockerfile
Maintenant que vous maîtrisez l'exécution de conteneurs, plongeons dans la création de votre propre image Docker à l'aide d'un Dockerfile. Ce processus vous permet de personnaliser vos applications et leurs environnements.
Creating a Simple Dockerfile
Créer un répertoire: First, create a new directory for your project:
mkdir my-docker-app cd my-docker-appCréez un Dockerfile: Create a file named
Dockerfilein this directory and open it in your favorite text editor.Ajouter des instructions: Add the following lines to your Dockerfile:
# Use an official Node.js runtime as a parent image FROM node:14 # Set the working directory in the container WORKDIR /usr/src/app # Copy package.json and package-lock.json COPY package*.json ./ # Install dependencies RUN npm install # Copy the rest of the application code COPY . . # Expose the application port EXPOSE 8080 # Command to run the application CMD ["node", "app.js"]
Explication des instructions DockerfileFROM FROM est l'instruction la plus importante de Docker. Elle initialise une nouvelle étape de construction et définit l'image de base pour les instructions suivantes. L'image de base est l'image sur laquelle votre image est basée. Par exemple, vous spécifiez une image Ubuntu et votre image Docker contiendra toutes les dépendances de l'image Ubuntu ainsi que les dépendances que vous ajoutez.FROM doit être la première instruction non commentée dans le Dockerfile.FROM peut apparaître plusieurs fois dans le même Dockerfile afin de créer plusieurs images ou vous pouvez utiliser l'un de ses artefacts de construction comme dépendances pour la prochaine étape de construction en utilisant l'étiquette FROM.FROM peut contenir un alias, par exemple FROM debian:bullseye AS build-stage. L'alias peut être utilisé dans l'étape FROM suivante, par exemple FROM --from=build-stage -cp /build/stage/some-artifact /in/to/image/.FROM peut également être utilisé pour créer un Dockerfile vide, par exemple FROM scratch.RUN RUN est l'instruction la plus couramment utilisée dans un Dockerfile. Elle est utilisée pour construire vos conteneurs. Chaque instruction RUN crée une nouvelle couche et exécute les commandes, puis valide les résultats. L'image résultante est utilisée pour l'étape suivante dans le Dockerfile.RUN a 2 formes: - RUN (shell form, the command is run in a shell, which by default is /bin/sh -c on Linux or cmd /S /C on Windows) - RUN ["executable", "param1", "param2"] (exec form)RUN form will use a shell, RUN /bin/ls will work, but the exec form, RUN ["/bin/ls"] might fail.The exec form is parsed as a JSON array, which means that you must use double-quotes (") around words not single-quotes ('):```dockerfile RUN ["echo", "hello"] ```The exec form is preferred because it can avoid shell string munging, and it allows you to RUN commands using an executable that is not in $PATH.The exec form makes it possible to avoid shell string munging, and to RUN commands using an executable that is not in $PATH.A number of Dockerfile instructions generate empty layers. Among these are: FROM, MAINTAINER, RUN, and ADD.
FROM: Spécifie l'image de base à utiliser. Dans ce cas, nous utilisons l'image officielle Node.js.WORKDIR: Sets the working directory for any subsequent instructions.COPIE: Copies files from your local filesystem into the container.RUNExécute une commande dans le conteneur, dans ce cas, l'installation des dépendances Node.js.EXPOSEIndique le port sur lequel le conteneur écoute les connexions.Invite de commandesSpécifie la commande qui sera exécutée lors du démarrage du conteneur.
Construire votre image Docker
Pour construire votre image Docker à partir du Dockerfile, rendez-vous dans le répertoire de votre projet et exécutez :
docker build -t mon-application-node .Comprendre la commande de build
construireCette commande demande à Docker de créer une image à partir du Dockerfile fourni.-t mon-application-nœud: Tags the image with a name (in this case,mon-application-nœud)..: Specifies the current directory as the build context, where Docker looks for the Dockerfile and any files it needs to copy.
Running Your Custom Image
Once the image is built, you can run it with the following command:
docker run -p 8080:8080 mon-app-nodeExplication de la run Commande
-p 8080:8080 (mappage de port): Maps port 8080 on your host to port 8080 on the container, allowing you to access the application via your browser or tools likecurl.
Advanced Container Management
As you get more comfortable with Docker, you’ll likely want to explore more advanced features and commands that enhance container management.
Utilisation de Docker Compose
Docker Compose est un outil permettant de définir et d'exécuter des applications Docker multi-conteneurs. Vous définissez les services, réseaux et volumes de votre application dans un docker-compose.yml file, making it easier to manage complex applications.
Example Docker Compose File
Voici un exemple simple d'un docker-compose.yml fichier pour une application web avec un backend Node.js et une base de données MongoDB :
version: '3'
services:
web:
build: .
ports:
- "8080:8080"
dépend_de:
- mongo
mongo:
image: mongo:latest
ports:
- "27017:27017"Running Docker Compose
Pour exécuter votre application définie dans docker-compose.yml, navigate to the directory containing the file and run:
docker-compose upThis command automatically builds your images (if specified) and starts the defined services.
Best Practices for Using Docker
As you embark on your Docker journey, consider these best practices:
Keep Images Small: Use lightweight base images and remove unnecessary files to reduce image size.
Utilisez des constructions multi-étapes: Si votre application nécessite une compilation à partir du code source, envisagez d'utiliser des builds multi-étapes pour garder votre image finale propre.
Tag Images: Always tag your images with version numbers to avoid confusion and ensure reproducibility.
Exploiter les volumes DockerUtilisez des volumes pour persister les données générées et utilisées par les conteneurs Docker. Cela permet de maintenir l'intégrité des données lors des redémarrages des conteneurs.
Sécurisez vos conteneurs: Implement security best practices like minimizing privileges, using the least privileged user, and regularly scanning images for vulnerabilities.
Conclusion
Félicitations ! Vous avez réussi à exécuter votre premier conteneur Docker et avez acquis des connaissances précieuses sur les concepts fondamentaux et les fonctionnalités de Docker. Au fur et à mesure que vous continuerez à explorer Docker, n'oubliez pas que la pratique est essentielle. Expérimentez avec différentes images, créez vos propres applications et intégrez Docker dans votre flux de travail de développement.
Docker simplifie non seulement le déploiement des applications, mais améliore également la collaboration entre les équipes de développement. Grâce aux connaissances que vous avez acquises grâce à cet article, vous êtes bien parti pour maîtriser l'art de la conteneurisation. Bonne conteneurisation !
