• Assurez la sécurité des applications de la bonne manière! Détectez, protégez, surveillez, accélérez et plus encore…
  • Ayez une idée du conteneur Docker.

    Dans l'espace technologique d'aujourd'hui, "Cela fonctionne sur mon système" est une expression très courante utilisée par les développeurs. Mais il existe de nombreux cas où l'application exécutée sur un système de développement ne s'exécute pas sur la machine d'un testeur ou sur une machine de production, ce qui conduit au chaos.

    Docker a été introduit pour résoudre ces problèmes. 💯

    Pourquoi Docker?

    Laissez-moi vous parler de mon expérience personnelle de la raison pour laquelle Docker est si essentiel.

    Je travaillais sur un projet full-stack avec mon équipe, où je devais créer une application qui utilisait Angular dans le frontend, Node.js dans le backend et MySQL comme un base de données. Nous sommes restés coincés dans plusieurs problèmes en travaillant sur cette application utilisant plusieurs technologies.

    • Le premier problème était la compatibilité du système d'exploitation. Comme j'utilisais plusieurs technologies, je devais m'assurer que toutes les technologies sont compatibles avec le système d'exploitation que j'utilise. Il y a eu des cas où la version d'angular ne fonctionnait pas avec la version du système d'exploitation que j'utilisais, j'ai donc dû changer la version du système d'exploitation plusieurs fois.
    • Depuis l'architecture de l'application, je construisais a changé avec le temps, et je me suis retrouvé dans des situations où les versions et dépendances des logiciels et des bibliothèques devaient être mises à niveau. J'ai rencontré de nombreux problèmes de compatibilité avant d'arriver à une version stable de toutes les technologies que j'utilisais pour mon application. Mettre à niveau ne serait-ce qu'un seul outil utilisé dans mon application était une entreprise risquée.
    • Plus tard, j'ai eu plus de développeurs travaillant sur mon application. La pile technologique étant lourde, ils ont dû exécuter plusieurs commandes pendant des heures pour configurer leur environnement, qui était compatible avec l'application. J'ai dû vérifier et évaluer l'environnement de chaque développeur pour m'assurer qu'il n'y avait pas d'incompatibilité avec la version technologique que j'utilisais.
    • Enfin, si l'un des développeurs n'était pas à l'aise avec le système d'exploitation que j'utilisais pour créer mon application, il était difficile pour lui de travailler sur l'application.

    Tout cela a rendu ma vie difficile dans le développement, la construction et l'expédition de l'application à temps. C'est là que Docker est entré en scène. Cela résout tous les problèmes que je viens de mentionner.

    Qu'est-ce que Docker?

    Docker est une plate-forme de conteneurisation qui regroupe l'application et ses dépendances dans un conteneur afin que l'application fonctionne de manière transparente dans n'importe quel environnement, qu'il s'agisse de développement, de mise en scène ou de production.

    Il s'agit d'un outil conçu pour faciliter la création, le déploiement et l'exécution d'applications à l'aide de conteneurs. Les conteneurs Docker sont légers solutions de rechange aux machines virtuelles et utilise le système d'exploitation hôte. Vous n'avez pas à pré-allouer de RAM dans les conteneurs comme vous le faites dans les machines virtuelles.

    Il s'agit d'une plate-forme open source permettant aux développeurs, aux administrateurs système et aux entreprises de créer, expédier et exécuter des applications distribuées à la volée.

    Pour en savoir plus sur le fonctionnement interne de Docker, consultez le Architecture Docker.

    Images Docker, conteneurs, Dockerfile

    Image Docker

    L'image Docker est un modèle nécessaire pour exécuter une application. Il se compose de code d'application, de bibliothèques, d'outils, de dépendances, etc.

    Les images Docker sont des fichiers immuables en lecture seule, parfois également appelés instantanés. Vous ne démarrez ni n'exécutez une image Docker; vous construisez un conteneur à travers lui. Lorsqu'un conteneur est créé à partir d'une image Docker, il crée une couche de conteneurs au-dessus de la couche d'image.

    Il doit y avoir une image docker de base qui est utilisée pour créer plusieurs autres images docker avec quelques modifications à l'image de base.

    Docker Hub est un référentiel d'images Docker pour presque toutes les piles technologiques. Vous pouvez extraire une image Docker de DockerHub et commencer à créer des conteneurs.

    dockerhub-geekflare

    Docker Containers

    Les conteneurs Docker sont des packages logiciels exécutables qui incluent toutes les dépendances requises pour exécuter une application. Avec les conteneurs Docker, les applications peuvent fonctionner efficacement dans différents environnements informatiques.

    Voici les fonctionnalités des conteneurs Docker:

    • Poids léger
    • Surcharge minimale (CPU / E / S / réseau)
    • Déploiements plus rapides
    • Facilement évolutif
    • Diminuer la consommation de stockage
    • Portable, exécutez-le partout.
    • Système d'exploitation de base minimal
    • Isolation des applications

    Dockerfile

    Dockerfile est un script shell qui définit toutes les tâches à exécuter. À partir d'un fichier docker, vous créez une image docker; à partir de l'image Docker, vous créez un conteneur Docker.

    fichier docker

    Installation de Docker

    Docker peut être facilement installé sur diverses plates-formes Linux, Windows ou macOS. Consultez ce post sur Comment installer Docker sur Ubuntu, CentOS, Debian et Windows.

    Aussi, Bureau Docker est disponible pour les machines Windows et Mac. Il s'agit d'une application exécutable très facile à installer et qui permet de créer et de conteneuriser des applications sur des environnements Windows et Mac.

    Éditions et prix de Docker

    Il existe deux éditions de Docker:

    • Édition communautaire (CE)
    • Édition Entreprise (EE)

    L'édition communautaire Docker est open source et gratuite. Docker CE vise une approche «faites-le vous-même» où DevOps les ingénieurs peuvent conteneuriser leur application par eux-mêmes.

    L'édition entreprise de Docker est livrée avec trois versions - Essentiel, la norme, et Avancée. L'édition de base est fournie avec la plate-forme, la prise en charge et la certification de docker, tandis que les éditions standard et avancées sont livrées avec des fonctionnalités de gestion des conteneurs et d'analyse de sécurité de docker ajoutées aux fonctionnalités de l'édition de base.

    La plupart des techniciens utilisent Docker gratuitement. Mais si vous avez besoin de fonctionnalités avancées, vous pouvez utiliser la version payante de Docker. Le prix dépend de fonctionnalités telles que la gestion du référentiel, les fonctionnalités CI / CD, la gestion des utilisateurs, les outils de développement et les options de support.

    Voici les détails du plan de Docker:

    tarification docker - geekflare

    Maintenant que vous connaissez les principes de base de Docker, laissez-moi vous montrer un exemple de docker très simple.

    Conteneur Docker Hello World

    Je vais tirer un image de docker bonjour-monde à partir de DockerHub et créez l'image pour créer un conteneur Docker qui exécutera l'application. Cette image contient une application simple pour imprimer un message d'accueil de Docker.

    Tout d'abord, je dois extraire l'image docker hello-world sur ma machine Ubuntu.

    Notes: cela suppose que Docker est déjà installé. Si ce n'est pas encore le cas, consultez le guide d'installation.

    [email protected]:~$ docker pull hello-world
    Using default tag: latest
    latest: Pulling from library/hello-world
    0e03bdcc26d7: Pull complete
    Digest: sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202
    Status: Downloaded newer image for hello-world:latest

    Vérifiez si l'image du docker a été extraite.

    [email protected]:~$ docker images
    REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
    hello-world                    latest              bf756fb1ae65        7 months ago        13.3kB
    kubernetesui/dashboard         v2.0.0-beta8        eb51a3597525        8 months ago        90.8MB
    geekflare_mongodb              latest              095d17727ca0        12 months ago       325MB

    Exécutez la commande ci-dessous pour créer un conteneur et exécuter l'application.

    [email protected]:~$ docker run hello-world
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    To generate this message, Docker took the following steps:
    1. The Docker client contacted the Docker daemon.
    2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
    3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
    4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
    
    To try something more ambitious, you can run an Ubuntu container with:
    $ docker run -it ubuntu bash
    
    Share images, automate workflows, and more with a free Docker ID:
    https://hub.docker.com/
    
    For more examples and ideas, visit:
    https://docs.docker.com/get-started/

    Maintenant, listez tous les conteneurs Docker. Vous pouvez voir le conteneur hello-world exécuté il y a 1 minute.

    [email protected]:~$ docker container ls -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
    1a1056caffc4        hello-world         "/hello"                 1 minutes ago       Exited (0) 1 minutes ago                         zealous_bose
    b0095c1e5536        geekflare_mongodb   "/bin/sh -c usr/bin/…"   12 months ago       Exited (0) 12 months ago                         mongo_container

    Commencez à explorer Docker; essayez ces fondamentaux commandes docker.

    Exécution de Nginx dans un conteneur Docker

    Ici, je vais vous montrer comment déployer Nginx dans un conteneur.

    La commande ci-dessous recherche une image Nginx localement. Puisqu'il n'y a pas d'image locale disponible, il extrait l'image docker Nginx du hub docker. Il crée ensuite un conteneur avec le nom nginx_geekflare à l'aide de l'image docker Nginx et exécute Nginx sur le port 80.

    [email protected]:~$ docker run --name nginx_geekflare -p 80:80 -d nginx
    Unable to find image 'nginx:latest' locally
    latest: Pulling from library/nginx
    bf5952930446: Pull complete 
    ba755a256dfe: Pull complete 
    c57dd87d0b93: Pull complete 
    d7fbf29df889: Pull complete 
    1f1070938ccd: Pull complete 
    Digest: sha256:36b74457bccb56fbf8b05f79c85569501b721d4db813b684391d63e02287c0b2
    Status: Downloaded newer image for nginx:latest
    fdad18387b27b48b8f2e14f8641791cc4d5edf667cc664198b67579cd76a5162

    Lorsque vous répertoriez les images Docker disponibles sur votre système, vous pouvez voir que l'image Nginx Docker a été extraite.

    [email protected]:~$ docker images
    REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
    nginx                          latest              08393e824c32        4 days ago          132MB
    hello-world                    latest              bf756fb1ae65        7 months ago        13.3kB
    kubernetesui/dashboard         v2.0.0-beta8        eb51a3597525        8 months ago        90.8MB
    geekflare_mongodb              latest              095d17727ca0        12 months ago       325MB

    Exécutez la commande ci-dessous pour répertorier tous les conteneurs en cours d'exécution. Vous pouvez voir le conteneur nginx_geekflare court à 0.0.0.0:80

    [email protected]:~$ docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS                NAMES
    fdad18387b27        nginx               "/docker-entrypoint.…"   58 seconds ago      Up 32 seconds                   0.0.0.0:80->80/tcp   nginx_geekflare
    1a1056caffc4        hello-world         "/hello"                 About an hour ago   Exited (0) About an hour ago                        zealous_bose
    b0095c1e5536        geekflare_mongodb   "/bin/sh -c usr/bin/…"   12 months ago       Exited (0) 12 months ago                            mongo_container

    Accédez à votre navigateur et ouvrez 0.0.0.0:80, vous pouvez voir que nginx est opérationnel dans un conteneur.

    conteneur nginx

    Cas d'utilisation courants de Docker

    Simplification de la configuration: Docker peut fonctionner sur n'importe quelle plate-forme à l'aide de sa configuration sans la surcharge réelle d'une machine virtuelle.

    Il vous permet de mettre le fichier de configuration dans le code et de transmettre des variables d'environnement pour répondre à différents environnements. Pour qu'une image du docker puisse être utilisée dans un environnement différent.

    Gestion de code: Le code voyage dans un environnement différent au cours de son parcours du développement à la production.

    Chaque environnement présente une légère variation par rapport à l'autre. Docker élimine cette différence en fournissant un environnement cohérent, rendant le développement et le codage beaucoup plus confortables.

    Les images Docker étant immuables, elles ont l'avantage de n'avoir aucun changement dans l'environnement d'application du développement à la production.

    Amélioration de la productivité du développement: Les deux objectifs essentiels de l'écosystème de développement sont de faire répliquer l'environnement de développement au plus près de l'environnement de production et le prochain objectif d'obtenir un code de qualité livré le plus rapidement possible.

    Docker permet au code de s'exécuter dans un conteneur qui reflète l'environnement de production, et contrairement à VM, docker a une capacité de mémoire de surcharge moindre en termes de capacité de mémoire, ce qui permet à plusieurs services de s'exécuter.

    L'autre objectif est atteint car nous utilisons le volume partagé du Docker pour que le code d'application soit disponible pour le conteneur à partir de l'hôte. Cela permet au développeur d'éditer le code source à partir de sa plate-forme et de son éditeur, ce qui reflétera l'environnement en cours d'exécution à l'intérieur du Docker.

    Isolement des demandes: Il y a des cas où l'isolement d'application peut être nécessaire, par exemple, API serveurs qui nécessitent un apache différent et un ensemble différent de dépendances.

    L'exécution de serveurs API sous différents conteneurs est une bien meilleure solution.

    Capacités de débogage: Docker fournit de nombreux outils qui fonctionnent bien avec les conteneurs, avec la possibilité d'insérer des points de contrôle dans des conteneurs et également différents conteneurs, ce qui est tout à fait essentiel lors du test des applications.

    Déploiement rapide: Les conteneurs Docker peuvent être créés assez rapidement, ce qui est obtenu car les conteneurs ne démarrent pas un système d'exploitation mais exécutent simplement l'application.

    Une fois définis, ils vous donnent l'assurance qu'une fois que le code a fonctionné, il fonctionnera dans tous les environnements.

    Conclusion

    Docker, avec ses nombreux avantages, devient un ajout précieux à l'infrastructure informatique. J'espère que ce qui précède vous en donne une idée. Découvrez d'autres articles de docker se salir les mains. Si vous souhaitez suivre des cours en ligne, je vous recommande de suivre Cours en ligne Docker Mastery.