Premiers pas avec Docker : Exécuter votre premier conteneur

Docker simplifie le déploiement d'applications grâce à la conteneurisation. Pour commencer, installez Docker, tirez une image et exécutez votre premier conteneur avec une simple commande dans le terminal.
Table of Contents
Commencer avec Docker : Exécuter votre premier conteneurDocker est une plateforme open-source qui permet de créer, déployer et exécuter des applications dans des conteneurs. Les conteneurs sont des environnements isolés qui contiennent tout ce dont une application a besoin pour fonctionner, y compris le code, les bibliothèques et les dépendances. Dans ce tutoriel, nous allons vous montrer comment exécuter votre premier conteneur Docker.Étape 1 : Installer DockerAvant de pouvoir exécuter des conteneurs Docker, vous devez d'abord installer Docker sur votre machine. Vous pouvez télécharger Docker depuis le site officiel de Docker. Suivez les instructions d'installation pour votre système d'exploitation.Étape 2 : Vérifier l'installation de DockerUne fois que vous avez installé Docker, vous pouvez vérifier que l'installation a réussi en exécutant la commande suivante dans votre terminal :```docker --version```Cette commande devrait afficher la version de Docker installée sur votre machine.Étape 3 : Exécuter votre premier conteneurMaintenant que Docker est installé, vous pouvez exécuter votre premier conteneur. Pour ce faire, exécutez la commande suivante dans votre terminal :```docker run hello-world```Cette commande téléchargera et exécutera l'image hello-world depuis le Docker Hub. L'image hello-world est une image simple qui affiche un message de bienvenue.Étape 4 : Vérifier les conteneurs en cours d'exécutionVous pouvez vérifier les conteneurs en cours d'exécution en exécutant la commande suivante dans votre terminal :```docker ps```Cette commande affichera une liste des conteneurs en cours d'exécution. Si vous n'avez pas d'autres conteneurs en cours d'exécution, vous ne verrez que le conteneur hello-world que vous avez exécuté à l'étape 3.Étape 5 : Arrêter le conteneurPour arrêter le conteneur hello-world, exécutez la commande suivante dans votre terminal :```docker stop hello-world```Cette commande arrêtera le conteneur hello-world.ConclusionDans ce tutoriel, nous vous avons montré comment exécuter votre premier conteneur Docker. Nous avons couvert les étapes de base pour installer Docker, exécuter un conteneur et vérifier les conteneurs en cours d'exécution. Docker est une plateforme puissante qui peut vous aider à créer, déployer et exécuter des applications dans des conteneurs. Nous espérons que ce tutoriel vous a aidé à démarrer avec Docker.

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:

  1. 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.

  2. 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-world

Comprendre 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-world

Que 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 -a

Cette 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 ubuntu

Comprendre 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

  1. Créer un répertoire: First, create a new directory for your project:

    mkdir my-docker-app
    cd my-docker-app
  2. Créez un Dockerfile: Create a file named Dockerfile in this directory and open it in your favorite text editor.

  3. 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-node

Explication 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 like curl.

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 up

This 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:

  1. Keep Images Small: Use lightweight base images and remove unnecessary files to reduce image size.

  2. 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.

  3. Tag Images: Always tag your images with version numbers to avoid confusion and ensure reproducibility.

  4. 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.

  5. 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 !