In DevOps Dernière mise à jour:
Partager sur:
Cloudways propose un hébergement cloud géré aux entreprises de toutes tailles pour héberger un site Web ou des applications Web complexes.

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.
  • Étant donné que l'architecture de l'application que je construisais a changé au fil du temps, je me suis retrouvé dans des situations où les versions et les dépendances des logiciels et des bibliothèques devaient être mises à niveau. J'ai rencontré beaucoup de problèmes de compatibilité avant d'arriver à une version stable de toutes les technologies que j'utilisais pour mon application. La mise à niveau d'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 la vie difficile pour développer, construire et expédier l'application à temps. C'est là que Docker est entré en scène. Il 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 des alternatives 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, fichier Docker

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 pas ou n'exécutez pas une image Docker ; vous construisez un conteneur à travers elle. Lorsqu'un conteneur est créé à partir d'une image Docker, il crée une couche de conteneur 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.

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:

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

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, les 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 tarifs 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 eux-mêmes conteneuriser leurs applications.

L'édition entreprise de Docker est livrée avec trois versions - Essentiel, la norme, et Avancée. L'édition de base est livrée avec une plate-forme Docker, un support et une certification, 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é 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:

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.

geekflare@geekflare:~$ 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.

geekflare@geekflare:~$ 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.

geekflare@geekflare:~$ 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, répertoriez tous les conteneurs Docker. Vous pouvez voir le conteneur hello-world exécuté il y a 1 minute.

geekflare@geekflare:~$ 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écuter 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.

geekflare@geekflare:~$ 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.

geekflare@geekflare:~$ 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

geekflare@geekflare:~$ 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.

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 donne une idée à ce sujet. Si vous souhaitez suivre des cours en ligne, je vous recommande de suivre Cours en ligne Docker Mastery.

Partager sur:
  • Avi
    Auteur
    Avi est un passionné de technologie avec une expertise dans les technologies tendances telles que DevOps, Cloud Computing, Big Data et bien d'autres. Il est passionné par l'apprentissage des technologies de pointe et le partage de ses connaissances avec les autres par…

Merci à nos commanditaires

Plus de bonnes lectures sur DevOps

Alimentez votre entreprise

Certains des outils et services pour aider votre entreprise à se développer.
  • L'outil de synthèse vocale qui utilise l'IA pour générer des voix humaines réalistes.

    Essayez Murf AI
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.

    Essayez Brightdata
  • Monday.com est un système d'exploitation de travail tout-en-un pour vous aider à gérer les projets, les tâches, le travail, les ventes, le CRM, les opérations, workflowset plus encore.

    Essayez Monday
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.

    Essayez Intruder