Une introduction pratique aux conteneurs Docker

Une introduction pratique aux conteneurs Docker

La popularité de Docker a monté en flèche depuis son introduction en 2013. Les entreprises et les particuliers utilisent désormais ou prévoient de l'utiliser, que ce soit dans les locaux ou dans le cloud. La flexibilité de Docker fait appel aux développeurs, aux administrateurs du système et à la gestion.

Cet article montre comment démarrer avec Docker, montrant des commandes de base pour vous faire entrer dans le train du conteneur.

Dans ce tutoriel, vous apprendrez:

  • Qu'est-ce que Docker et comment il est utilisé.
  • Comment installer Docker sur Linux.
  • Comment exécuter des conteneurs Docker.

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Toute distribution Linux
Logiciel Docker
Autre Accès privilégié à votre système Linux en tant que racine ou via le Sudo commande.
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Concepts de base docker

Les plates-formes de virtualisation traditionnelles, comme VirtualBox et VMware, abstraitent un ordinateur entier, visant à isoler le héberger et invité systèmes d'exploitation et nécessitant qu'un système d'exploitation entier soit installé dans le invité Machine virtuelle (VM). La virtualisation de Docker adopte une approche différente - il résume uniquement le système d'exploitation, ce qui signifie que l'hôte et les invités partagent la même chose noyau.

Les avantages sont que invités (appelé conteneurs) n'ont pas à emballer un système d'exploitation entier, ce qui les rend légers - de petite taille et très rapidement pour démarrer. En outre, en interfaçant directement avec le système d'exploitation hôte, les conteneurs Docker ne subissent pas des pénalités de performance de virtualisation traditionnelle, ce qui nécessite la traduction des appels système entre les systèmes d'exploitation invités et hôtes par le biais de pilotes qui résument un matériel virtuel.

Les inconvénients sont qu'il n'est pas possible d'accueillir un invité Windows sur un hôte Linux, par exemple, et que tous les invités partagent des ressources (CPU, RAM et disque) sur l'hôte, ce qui signifie qu'un conteneur mal géré peut faire tomber l'ensemble du serveur. Il est certain que Docker n'a pas l'intention de remplacer la virtualisation traditionnelle, qui a encore de nombreux scénarios valides. Il fournit simplement un autre moyen d'obtenir l'isolement des applications tout en réduisant les dépendances des bibliothèques, sans perdre les performances.

Docker vous permet de lancer conteneurs, qui exécutent des instances de images. Une image contient le disque avec toutes les dépendances des bibliothèques nécessaires pour exécuter une application, tandis qu'un conteneur contient le contexte d'exécution. Il peut y avoir plusieurs conteneurs de la même image exécutant en même temps, chacun séparé des autres.

Il existe une recommandation qu'un conteneur Docker exécute une seule application, qui est souvent mal interprétée à «l'exécution d'un seul processus». Il n'y a aucun problème à exécuter plus d'un processus dans un conteneur, tant qu'ils appartiennent à la même application. Une application complexe peut cependant nécessiter l'exécution de plusieurs conteneurs, comme, par exemple, un pour le serveur Web (Apache, Nginx), un pour l'application (PHP-FPM) et un pour la base de données (MySQL, PostgreSQL, MongoDB ). Ces conteneurs peuvent s'exécuter dans le même ou dans des hôtes différents. Les conteneurs du même hôte communiquent via un réseau virtuel géré par Docker.



Les images Docker sont récupérées d'un référentiel nommé enregistrement et sont mis en cache localement. Si un registre n'est pas spécifié, Docker essaiera de trouver l'image au référentiel par défaut, appelé le Hub docker. Le Docker Hub contient une énorme quantité d'images prêtes à être utilisées fournies par les entreprises et les particuliers - et vous pouvez également publier vos images. De plus, il y a aussi le Magasin Docker, où les entreprises peuvent proposer des images organisées de leur logiciel. Il est recommandé de passer du temps à parcourir et à apprendre comment ces référentiels fonctionnent.

Assez dit, installons docker et apprenons quelques commandes de base.

Installation de Docker sur Linux

Ubuntu

Dans Ubuntu Bionic Beaver 18.04, avoir installé Docker est simple.

# apt installer docker.Io 

Debian

Si vous exécutez Debian Testing ou instable, la commande ci-dessus fonctionnera également. Pour Debian Stable (Stretch), visitez notre moteur Docker sur le guide d'installation de Debian 9 Stretch Linux.

Centos

Dans Centos 1804, c'est un Miam commande.

# yum install docker 

Feutre

Dans Fedora 28, il est également prêt à être installé avec un DNF commande.

# DNF Installer Docker 

Après l'installation de Docker

Une fois installé, vous pouvez vérifier le service Docker en cours d'exécution.

# Statut Docker de service 

Si ce n'est pas le cas, alors commencez-le.

# Service Docker Start 

Une fois le service en cours d'exécution, vous pouvez vérifier s'il y a des conteneurs en cours d'exécution.

# docker ps 

Si vous ne voulez pas taper Sudo Pour interagir avec Docker Service, ajoutez simplement votre utilisateur à Docker Group. Vous devez vous connecter à nouveau pour rendre le changement.

# usermod -a -g docker nom d'utilisateur 

Après la connexion, vérifiez que vous êtes dans Docker Group

$ Groupes Roger Adm Cdrom Sudo Dip Plugdev lpadmin Sambashare docker 


Maintenant tu n'as pas besoin Sudo Pour interagir avec le moteur Docker.

Exécution d'un conteneur Docker

Exécutons un Bonjour le monde récipient.

$ docker run hello-world Impossible de trouver l'image 'Hello-World: Dernier' Locally Dernier: tire de la bibliothèque / Hello-World D1725B59E92D: Pull Complete Digest: SHA256: 0ADD3ACE90ECB4ADBF7777E9AACF18357296E799F81CABC9FDE470971E4999999999! Ce message montre que votre installation semble fonctionner correctement. Pour générer ce message, Docker a pris les mesures suivantes: 1. Le client Docker a contacté le démon Docker. 2. Le démon Docker a tiré l'image "Hello-World" du Docker Hub. (AMD64) 3. Le démon Docker a créé un nouveau conteneur à partir de cette image qui exécute l'exécutable qui produit la sortie que vous lisez actuellement. 4. Le démon Docker a diffusé cette sortie au client Docker, qui l'a envoyé à votre terminal. Pour essayer quelque chose de plus ambitieux, vous pouvez exécuter un conteneur Ubuntu avec: $ docker run -it ubuntu bash partager des images, automatiser les workflows, et plus encore avec un Docker ID gratuit: https: // hub.docker.com / Pour plus d'exemples et d'idées, visitez: https: // docs.docker.com / get-started / 
Copie

La commande est vraiment simple, mais beaucoup de choses se sont produites. Tout d'abord, le moteur Docker a réalisé que l'image demandée n'était pas dans le cache local (ligne 2). Ensuite, l'image est tirée du registre Docker et stocké localement (ligne 3). Enfin, un conteneur est créé, exécuté (ligne 8) et terminé. Si vous réessayez, vous remarquerez que l'exécution est beaucoup plus rapide car les deux, l'image et le conteneur, sont mis en cache. Maintenant, vérifiez les images stockées localement.

$ Docker Images Repository Tag ID d'image Créé Taille Hello-World Dernier 4AB4C602AA5E Il y a 2 semaines 1.84KB 
Copie

Notez que le Bonjour le monde L'image est minime, avec seulement 1.84 Ko de taille. Cela illustre qu'une grande partie du système d'exploitation hôte est utilisée et que l'image ne contient que les dépendances d'application.

Vous pouvez supprimer cette image.

$ docker images rm Hello-world $ docker images 

Maintenant, faisons quelque chose de plus ambitieux: Pulp and Apache Webserver Image et exécutez un conteneur.

$ docker pull httpd Utilisation de la balise par défaut: Dernier dernier: tirage de la bibliothèque / httpd f189db1b88b3: tirez complet BA2D31D4E2E7: Pull complet 23A65F5E3746: Pull complet 5E8ECCBD4BC6: Pull complet 4C145EEC18D8: Pull complet V1'1C7444 863nt.84KB httpd Dernier D595A4011AE3 il y a 6 semaines 178 Mo 
Copie

Ensuite, vous exécutez un conteneur à partir de cette image.

$ docker run -d -p 8000: 80 httpd dd703b1590a91bdc10488b48798e42ddecd1c6519324a613f4b5563c21874a98 roger @ slash: ~ $ docker ps condeneur commande.0.0.0: 8000-> 80 / TCP Cranky_Torvalds 
Copie

Dans sa forme la plus simple, la commande serait docker run httpd, Mais le conteneur serait arrêté juste après l'exécution d'Apache, et aucun port ne serait exposé. Le -d (détachez) L'option est nécessaire pour que le conteneur reste en marche en arrière-plan.

Le -P 8000: 80 L'option est le mappage du port 80 du conteneur au port 8000 de l'hôte, ce qui rend le serveur Web disponible dans le réseau. Par défaut, les ports de conteneurs ne sont pas exposés à l'hôte. Maintenant, vous pouvez pointer un navigateur Web pour http: // localhost: 8000 et voir la page de test Apache.



Page par défaut Apache indiquant que cela fonctionne

OK, mais comment changer la page Web? Nous devons lier un dossier de l'hôte dans le conteneur / usr / local / apache2 / htdocs / Répertoire (nous verrons plus tard que l'image Apache est construite à partir d'un Debian Jessy, quelle que soit la saveur Linux de votre hôte). Arrêtez le conteneur et remettez-le à nouveau.

$ docker ps $ docker stop cranky_torvalds $ echo "ma page Web"> index.html $ docker run -d -p 8000: 80 -v "$ pwd": / usr / local / apache2 / htdocs / httpd 
Copie

Nous avons créé un indice.html fichier dans le répertoire actuel de l'hôte et cartographié ce répertoire à l'intérieur du htdocs Répertoire du conteneur avec le -V changer. Maintenant actualiser le navigateur Web.

Indice.html

Maintenant la garniture: Expérience éditant le indice.html fichier dans l'hôte et actualiser le navigateur Web, sans changer l'état du conteneur. Oui, chaque fois qu'un fichier est modifié ou qu'un nouveau fichier est ajouté au répertoire actuel, il est mis à disposition à l'intérieur du conteneur en raison du -V cartographie.

Créer un autre fichier et y accéder dans le navigateur.

$ echo "deuxième page"> index2.html 


Index2.html

Lorsque vous avez terminé, arrêtez l'exécution du conteneur.

$ docker stop angry_poincare 

Notez que maintenant vous avez un serveur Web prêt à être exécuté chaque fois que vous en avez besoin, et vous n'avez touché aucun fichier de configuration dans votre système d'exploitation. Tout est encapsulé dans l'image Apache qui est mise en cache par Docker. De plus, vous pouvez télécharger l'image et démarrer un conteneur sur n'importe quel autre ordinateur.

Conclusion

Cet article a présenté les principaux concepts Docker et certaines commandes de base. J'espère que vous comprenez les avantages et voyez que, une fois les concepts compris, il n'est pas compliqué d'utiliser Docker. Les futurs articles présenteront d'autres fonctionnalités et cas d'utilisation.

Plus dans cette série d'articles Docker

  • Comment interagir avec les conteneurs Docker
  • Comment personnaliser les images Docker avec Dockerfiles

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Masterring Bash Script Loops
  • Fichiers de configuration Linux: 30 premiers
  • Meilleure distribution Linux pour les développeurs
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Choses à installer sur Ubuntu 22.04
  • Téléchargement Linux
  • Comment doubler Kali Linux et Windows 10