GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment utiliser les images Docker, les conteneurs et les Dockerfiles en profondeur

Les images Docker facilitent le déploiement de plusieurs conteneurs sans avoir à conserver la même image sur plusieurs machines virtuelles. Vous pouvez utiliser un Dockerfile pour automatiser l'installation et la configuration d'une image et de ses dépendances. ADockerfile est un fichier texte des commandes (qui sont exécutées dans l'ordre) utilisé pour automatiser l'installation et la configuration d'une image Docker. Cet article développe notre guide Comment utiliser un Dockerfile pour créer une image Docker en couvrant l'utilisation approfondie des images Docker, des conteneurs et des Dockerfiles.

Avant de commencer

  1. Familiarisez-vous avec notre guide de démarrage, créez et mettez à jour un Linode et installez Docker. Vous pouvez également déployer rapidement un Linode mis à jour et compatible Docker avec l'application Docker Marketplace.

  2. Assurez-vous que votre Linode est sécurisé en suivant notre guide sur la configuration et la sécurisation d'une instance de calcul.

  3. Ce guide suppose que vous maîtrisez l'utilisation de l'interface de ligne de commande Docker (CLI). Pour en savoir plus sur la CLI Docker, consultez leur documentation.

  4. Consultez notre guide sur pour vous familiariser avec les bases de Dockerfiles.

Créer votre fichier Docker pour l'image Docker

Docker nécessite un Dockerfile fonctionnel pour ses builds. Ici, nous allons créer un Dockerfile qui configure une image Ubuntu avec Apache agissant comme un serveur Web et utilisant le port HTTP standard 80.

  1. À l'invite de commande (soit via SSH ou Lish dans le Linode Manager), créez et changez de répertoire :

    mkdir ~/mydockerbuild && cd ~/mydockerbuild
    
  2. Créez un exemple de Dockerfile pour votre application Apache :

    touch apache_dockerfile
    
  3. Ouvrez le Dockerfile à l'aide de l'éditeur de texte de votre choix (pour cet exemple, nous utilisons nano) :

    nano apache_dockerfile
    
  4. Copiez l'exemple suivant dans votre Dockerfile. Cela crée un Dockerfile qui génère une image Ubuntu mise à jour, définit les informations du responsable, installe Apache, ouvre le port de conteneur 80 et démarre enfin un serveur Apache lorsqu'il est exécuté :

    Fichier :apache_dockerfile
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    FROM ubuntu
    MAINTAINER John Doe [email protected]
    ARG DEBIAN_FRONTEND=noninteractive
    RUN apt-get update
    RUN apt-get upgrade -y
    RUN apt-get install apache2 -y
    RUN apt-get clean
    EXPOSE 80
    CMD ["apache2ctl","-D","FOREGROUND"]
    Remarque Le ARG DEBIAN_FRONTEND=noninteractive L'instruction suivante garantit que l'instruction RUN apt-get suivante les commandes s'exécutent sans nécessiter d'entrée supplémentaire de l'utilisateur lors de la création d'images. Cette instruction peut également être écrite en utilisant ENV au lieu de ARG pour que la variable d'environnement persiste dans les conteneurs déployés avec l'image. Étant donné que la non-interactivité n'est pas attendue lorsque vous travaillez dans de tels conteneurs, ARG est recommandé dans ce cas.
  5. Enregistrez et fermez le fichier.

Construire une image Docker à partir du Dockerfile

  1. Construire une image étiquetée apache_image à partir du Dockerfile en utilisant le docker build commande :

    docker build ~/mydockerbuild -f apache_dockerfile -t apache_image
    
  2. Une fois la construction terminée et que vous êtes revenu à l'invite de commande, affichez les images disponibles de votre système avec la commande suivante :

     docker images
    

    La sortie devrait ressembler à ceci (le référentiel "ubuntu" est également disponible en raison de la ligne "FROM ubuntu" dans le Dockerfile) :

    REPOSITORY     TAG       IMAGE ID       CREATED         SIZE
    apache_image   latest    7e5c14739da5   7 seconds ago   215MB
    ubuntu         latest    7e0aa2d69a15   6 weeks ago     72.7MB
    Remarque

    Par défaut, les images construites sont étiquetées « dernières ». Si vous souhaitez modifier la balise, par exemple en "développement", formatez la commande comme suit :

    docker build ~/mydockerbuild -f apache_dockerfile -t apache_image:development
    

Exécuter vos images Docker en tant que conteneurs

Lorsque vous exécutez le docker run commande, vous lancez un conteneur Docker lié à votre session de terminal. Ceci est également appelé exécuter un processus au premier plan . Lorsque votre processus racine est au premier plan et est lié à une session de terminal, votre conteneur se ferme dès que vous fermez la session de terminal. Si vous souhaitez que votre conteneur s'exécute même après la fermeture de votre session de terminal, vous pouvez exécuter votre conteneur en mode détaché mode. Cela exécute votre conteneur en arrière-plan .

Pour exécuter l'image Docker en tant que conteneur en mode détaché :

  1. Entrez la commande suivante pour créer un conteneur nommé apache avec votre image, en utilisant le -d argument pour garantir que votre conteneur s'exécute en arrière-plan :

    docker run --name apache -d apache_image
    
  2. Une fois de retour à l'invite de commande, exécutez la commande suivante pour répertorier vos conteneurs actifs et confirmer que apache s'exécute en arrière-plan :

    docker ps
    
    CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
    1d5e1da50a86   apache_image   "apache2ctl -D FOREG…"   3 minutes ago   Up 3 minutes   80/tcp    apache
  3. Vous pouvez maintenant faire votre travail de développement avec le serveur Apache et avoir toujours accès à la ligne de commande. Cependant, votre conteneur n'est pas accessible au public car il manque des configurations de port supplémentaires. Dans la section suivante, vous allez reconstruire le conteneur avec des configurations de port qui vous permettent d'accéder au serveur Web. Pour l'instant, arrêtez le conteneur :

    docker stop apache
    
    Remarque Vous pouvez saisir l'ID du conteneur à la place de apache dans la commande ci-dessus.
  4. Entrez docker ps à nouveau pour vous assurer que tous vos fichiers apache le conteneur n'est plus en cours d'exécution.

  5. Maintenant que le conteneur a été arrêté, vous pouvez le supprimer :

    docker rm apache
    
Attention

La suppression d'un conteneur de cette manière supprime toutes les données qu'il contient. Si vous avez effectué des ajustements que vous souhaitez reporter dans un nouveau conteneur, vous pouvez à la place utiliser docker commit pour créer une nouvelle image qui inclut vos mises à jour :

docker commit apache apache_image_update

Ensuite, vous pouvez déployer un nouveau conteneur basé sur le nouveau apache_image_update image dans la section suivante.

Configurer les ports de votre conteneur Docker

Vous pouvez utiliser le run options de la commande pour configurer différents aspects de votre conteneur. Lorsque votre conteneur s'exécute sur un hôte distant et sert son application, vous pouvez configurer ses ports pour exposer l'application aux utilisateurs.

Par exemple, vous pouvez configurer votre apache conteneur pour utiliser le port hôte 8080 et port à conteneurs 80 comme dans l'exemple de commande ci-dessous. Remarquez le -d option utilisée dans la commande pour exécuter le conteneur en tant que processus détaché.

docker run --name apache -p 8080:80 -d apache_image

La syntaxe générale de cette commande est la suivante :

docker run -–name <container name> -p <network port>:<container port> -d <container image label or ID>

Chaque paramètre est décrit dans la liste suivante :

  • <container name> :Nom du conteneur Docker
  • <host port> :port hôte qui est mappé sur le port ouvert du conteneur
  • <container port> :Port où le conteneur Docker écoute
  • <container image name> :nom de l'image Docker utilisée pour votre déploiement

Maintenant, accédez à l'adresse IP de votre Linode sur le port hôte 8080 en accédant à http://<your Linode's IP address>:8080 dans un navigateur Web. Vous devriez voir la "page par défaut d'Apache2 Ubuntu" servie à partir de votre conteneur Docker.

Attention Lors du déploiement de conteneurs avec des configurations de port, Docker peut également créer des règles de pare-feu hôte pour autoriser l'accès public à ces conteneurs. Cela peut remplacer ou entrer en conflit avec les règles de pare-feu de l'hôte que vous avez configurées sur votre Linode.

Lectures complémentaires

Ce guide et Comment utiliser un Dockerfile pour créer une image Docker couvraient les bases de l'utilisation de Dockerfiles pour créer des images et des conteneurs, mais ils effleurent à peine la surface de ce que vous pouvez accomplir avec Docker. Pour plus d'informations :

  • visitez la documentation officielle des bonnes pratiques Dockerfile pour en savoir plus sur Dockerfiles ;

  • et, malgré son nom, le guide Docker'sGet Started est un didacticiel approfondi, qui mène à des guides encore plus approfondis, tels que le déploiement d'applications dans le cloud et la configuration de CI/CD (intégration et déploiement continus).

Plus d'informations

Vous pouvez consulter les ressources suivantes pour plus d'informations sur ce sujet. Bien que ceux-ci soient fournis dans l'espoir qu'ils seront utiles, veuillez noter que nous ne pouvons pas garantir l'exactitude ou l'actualité des documents hébergés en externe.

  • Bonnes pratiques pour l'écriture de Dockerfiles
  • Images Docker officielles sur Docker Hub
  • Documents Docker

Docker
  1. Comment supprimer toutes les images Docker, les conteneurs, les volumes, les réseaux et les ressources inutilisées

  2. Comment installer et utiliser Docker dans Ubuntu 20.04

  3. Comment et pourquoi utiliser un hôte Docker distant

  4. Comment installer et utiliser Docker Compose sur CentOS

  5. Comment installer Docker et exécuter des conteneurs Docker dans Ubuntu

Qu'est-ce que Docker Compose et comment l'utiliser ?

Comment utiliser Docker Cp pour copier des fichiers entre l'hôte et les conteneurs

Comment nettoyer et supprimer des images Docker

Comment utiliser Hadolint pour pelucher vos fichiers Docker

Comment installer et utiliser Docker sur Ubuntu 20.04

Comment installer et utiliser Docker sur AlmaLinux 8