Comment gérer et surveiller les conteneurs Docker avec dry sur Ubuntu 16.04

introduction

image: https: //i.imgur.com/5uQQNAa.gif [GIF de surveillance sèche]

dry est une application de terminal simple mais complète conçue pour interagir avec https://www.digitalocean.com/community/tutorials/the-docker-ecosystem-an-introduction- to-common-components [Docker] conteneurs et leurs images. L’utilisation de dry élimine la répétition lors de l’exécution des commandes de routine Docker Engine, ainsi que fournit une alternative plus visuelle à l’interface CLI native de Docker.

dry a la capacité de démarrer et d’arrêter rapidement les conteneurs, de supprimer en toute sécurité ou de force les images Docker, de surveiller en permanence les processus de conteneur en temps réel et d’accéder aux sorties de + info +, + inspect , ' historique + et de Docker. + log + `commandes.

La plupart des commandes pouvant être exécutées via l’interface de ligne de commande officielle de Docker Engine sont disponibles plus facilement à sec, avec le même comportement et les mêmes résultats. dry dispose en outre de la fonctionnalité Docker Swarm, fournissant une prise pour surveiller et gérer les configurations de conteneurs multi-hôtes.

Dans ce tutoriel, nous allons installer dry et explorer certaines de ses fonctionnalités les plus utiles:

  • Interaction avec les conteneurs, les images et les réseaux Docker,

  • Surveillance des conteneurs Docker, et

  • Éventuellement, interaction avec les nœuds et services Docker Swarm.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

Étape 1 - Installation à sec

Premièrement, nous devons installer dry sur le serveur Docker. La dernière version des fichiers binaires secs est disponible sur dry ’page de publication de GitHub.

Téléchargez la dernière version du binaire + dry-linux-amd64 +, qui est + v0.9-beta.3 + au moment de la publication.

wget https://github.com/moncho/dry/releases/download//dry-linux-amd64

Ensuite, déplacez et renommez le nouveau fichier binaire de + dry-linux-amd64 + en + / usr / local / bin / dry +.

sudo mv dry-linux-amd64 /usr/local/bin/dry

+ / usr / local / bin + est l’emplacement standard utilisé pour stocker les fichiers binaires des programmes locaux sur un serveur. Déplacer le fichier binaire dry vers ce répertoire nous donne également la possibilité d’appeler dry sur la ligne de commande depuis n’importe où sur le serveur, car ce répertoire est inclus dans la https://www.digitalocean.com/community/tutorials/how-to- du shell. read-and-set-environment-and-shell-variables-on-linux-vps [+ $ PATH + variable d’environnement].

Changez les permissions binaires avec + chmod pour vous permettre de l’exécuter.

sudo chmod 755 /usr/local/bin/dry

Vous pouvez tester que + dry + est maintenant accessible et fonctionne correctement en exécutant le programme avec son option + -v +.

dry -v

Cela renverra le numéro de version et les détails de construction:

Version Details Outputdry version 0.9-beta.2, build d4d7a789

Maintenant que le dry est configuré, essayons de l’utiliser.

Étape 2 - Interaction avec les conteneurs Docker

Courez à sec pour afficher son tableau de bord dans votre terminal.

dry

La partie supérieure du tableau de bord contient des informations sur le serveur et le logiciel Docker, telles que la version de Docker, la version de l’API de Docker Engine, si le serveur est un nœud travailleur / gestionnaire activé par Docker Swarm, ainsi que le nom d’hôte et les ressources du serveur.

Le bas du tableau de bord contient une référence pour les touches de navigation que vous pouvez utiliser pour accéder à différentes parties de Dry:

Navigation key options[H]:Help [Q]:Quit | [F1]:Sort [F2]:Toggle Show Containers [F5]:Refresh [%]:Filter |
[m]:Monitor mode [2]:Images [3]:Networks [4]:Nodes [5]:Services | [Enter]:Commands

Ce tableau de bord lui-même utilise par défaut la liste + Containers + lorsque vous démarrez pour la première fois à sec. Cette vue vous permet de voir l’état général des conteneurs de votre hôte.

Si vous utilisez les exemples de pile de conteneurs Wordpress, MariaDB et PHPMyAdmin des tutoriels préalables, ces trois conteneurs nouvellement composés sont répertoriés:

image: https: //i.imgur.com/Wjd4PWh.png [tableau de bord sec]

Utilisez les flèches haut et bas de votre clavier pour sélectionner le conteneur Wordpress, puis appuyez sur les touches + ENTER +.

Cela affichera des informations sur le conteneur en haut de l’écran, telles que le mappage des ports, les liens réseau et l’adresse IP du conteneur réseau:

Wordpress Container Statistics  Container Name:  wordpress_wordpress_1                    ID:       f67f9914b57e       Status:  Up 13 minutes
 Image:           wordpress                                Created:  About an hour ago
 Command:         docker-entrypoint.sh apache2-foreground
 Port mapping:    0.0.0.0:8080->80/tcp
 Network Name:    bridge
 IP Address:     172.17.0.3
 Labels           6

Lorsque vous sélectionnez un conteneur, le centre bas de l’écran affiche également une nouvelle liste d’options pouvant être sélectionnées:

  • + Fetch logs +, qui est l’équivalent de la commande du moteur Docker d`+docker logs + `. Ceci est utile pour le débogage et le dépannage des erreurs dans les conteneurs.

  • + Kill container in, que vous pouvez utiliser si un conteneur ne répond pas et n’est pas excitant comme il se doit.

  • + Remove container in, que vous pouvez utiliser pour éliminer proprement les conteneurs inutiles.

  • + Inspect container +, qui est l’équivalent de `+docker container inspect + `.

  • + Restart +, qui arrête et redémarre un conteneur. beaucoup plus rapide que de saisir les commandes du moteur Docker à l’adresse to restart ou à la page https://docs.docker.com/engine/reference/commandline/ps/ [interroger le statut] d’un conteneur.

  • + Show image history +, qui répertorie les commandes utilisées pour créer l’image du conteneur. Ces "couches" sont générées pendant le processus de construction de l’image et résultent des commandes / actions fournies dans https://www.digitalocean.com/community/tutorials/docker-explained-using-dockerfiles-to-automate-building-of- images [Dockerfile]. Avec cette option, nous pouvons voir comment le conteneur a été généré avec l’image de base de Docker.

  • + Stats + Top +, contient des informations telles que l’utilisation du processeur, la consommation de mémoire, le trafic réseau entrant et sortant, le fonctionnement du système de fichiers, le nombre total d’ID de processus et la durée totale de disponibilité du conteneur. Il comprend également une liste de processus fonctionnellement identique à la sortie de `top `.

  • + Stop +, qui arrête un conteneur. Vous pouvez utiliser + F2 + pour basculer les conteneurs de la vue + Containers + afin d’inclure + actuellement arrêtés et actifs +, et vous pouvez redémarrer un conteneur arrêté avec l’option + Restart + après l’avoir sélectionné.

Appuyez sur la touche + ESC pour revenir à la section racine` + Containers` du tableau de bord. A partir de là, nous allons regarder la section + Images.

Étape 3 - Interaction avec les images Docker

Dans la section + Containers +, appuyez sur + 2 + pour accéder à la section + Images + de dry.

image: https: //i.imgur.com/18pFgHi.png [Section Images]

Cette section fournit un accès plus facile à la `+docker image inspect + `command. Dry propose également des raccourcis clavier pratiques, que vous pouvez voir dans la barre de navigation:

  • + CTRL + D + pour + Remove Dangling +, "volumes suspendus" fait référence à d’autres volumes de conteneur qui ne sont plus référencés par aucun conteneur et sont donc redondants. Normalement, dans Docker sur la ligne de commande, cette opération implique la commande + docker volume rm + et l’indicateur + dangling = true +, ainsi que les volumes de données cibles.

  • + CTRL + E + pour + Remove +, qui est l’équivalent de `+docker rmi + `, vous permet de supprimer des images aussi longtemps que aucun conteneur créé à partir de cette image n’est toujours actif et en cours d’exécution.

  • + CTRL + F + pour + Force Remove +, ce qui vous permet de supprimer avec force l’image en surbrillance comme si vous utilisiez + docker rmi --force +.

  • + I + pour + History +, qui affiche les mêmes données que + Show History History dans la section` + Container`.

Jusqu’à présent, nous avons vu les contenants et les sections d’images sèches. La dernière section à explorer concerne les réseaux.

Étape 4 - Interaction avec les réseaux Docker

Dans la section + Images +, appuyez sur + 3 + pour accéder à la section + Réseaux +.

image: https: //i.imgur.com/rR874kM.png [Tableau de bord de Docker Networks]

Cette section est idéale pour les verifying liaisons réseau et la configuration réseau des conteneurs Docker.

Vous pouvez déteindre un réseau de Docker avec + CTRL + E +, bien que vous ne puissiez pas supprimer les réseaux Docker par défaut prédéfinis comme + bridge + . Par exemple, vous pouvez quand même essayer de supprimer + bridge + en le sélectionnant avec les touches fléchées et en appuyant sur + ENTER +. Vous verrez un long morceau de sortie comme ceci:

Output. . .
   "Containers": {
       "34f8295b39b7c3364d9ceafd4e96194f210f22acc41d938761e1340de7010e05": {
           "Name": "wordpress_wordpress_db_1",
           "EndpointID": "68370df8a13b92f3dae2ee72ff769e5bdc00da348ef3e22fa5b8f7e9e979dbd5",
           "MacAddress": "02:42:ac:11:00:02",
           "IPv4Address": "172.17.0.2/16",
           "IPv6Address": ""
       },
       "e7105685e0e6397fd762949e869095aa4451a26cdacdad7f5e177bde52819c4a": {
           "Name": "wordpress_wordpress_1",
           "EndpointID": "44ea3a133d887c5352b8ccf70c94cda9f05891b2db8b99a95096a19d4a504e16",
           "MacAddress": "02:42:ac:11:00:04",
           "IPv4Address": "172.17.0.4/16",
           "IPv6Address": ""
       },
       "e7d65c76b50ff03fc50fc374be1fa4bf462e9454f8d50c89973e1e5693eef559": {
           "Name": "wordpress_phpmyadmin_1",
           "EndpointID": "7fb1b55dd92034cca1dd65fb0c824e87a9ba7bbc0860cd3ed34744390d670b78",
           "MacAddress": "02:42:ac:11:00:03",
           "IPv4Address": "172.17.0.3/16",
           "IPv6Address": ""
       }
   },
. . .

La partie de la sortie ci-dessus montre les adresses IP de réseau et les adresses MAC des liaisons de conteneur et du réseau + pont + du conteneur. À partir de là, vous pouvez vérifier que tous les conteneurs sont membres du réseau + bridge et peuvent communiquer, ce qui est une indication élémentaire de la validité du réseau de conteneurs.

Utilisez + ESC + pour fermer la sortie réseau. Maintenant que nous avons examiné les sections + Containers +, + Images +, et '+ Networks + `de dry, passons à la fonctionnalité de surveillance de dry.

Étape 5 - Surveillance des conteneurs Docker

Appuyez sur la touche + M + pour un aperçu condensé rapide de tous vos conteneurs en cours d’exécution sur le serveur / hôte actuel. Cet écran est accessible depuis n’importe quelle section racine de dry, comme + Containers +, + Images + et + + Réseaux +.

image: https: //i.imgur.com/L7cEJ1L.png [Image en mode moniteur]

Des portions de ces informations sont répertoriées ailleurs dans le programme (comme dans les options de conteneur + Stats + Top +), mais cette vue fournit un emplacement central pour les informations sur tous les conteneurs, ce qui vous permet de surveiller l’ensemble de la pile. Ceci est utile lors de la gestion de grandes quantités de conteneurs.

Appuyez sur + Q + pour quitter le tableau de bord. À partir de là, nous allons nous installer à sec avec Docker Swarm.

Étape 6 - Installation à sec sur le gestionnaire de cluster Docker Swarm (facultatif)

À partir de votre ordinateur local, l’utilisateur + docker-machine sur SSH dans le nœud de gestionnaire de grappe désigné. Dans le didacticiel préalable à Docker Swarm, cela était défini comme + node-1 +.

docker-machine ssh node-1

Pour montrer une autre méthode d’installation de dry, + curl + le script d’installation officiel et exécutez-le. Si vous préférez éviter le `+ curl …​ | sh + `modèle, vous pouvez installer sec comme à l’étape 1.

curl -sSf https://moncho.github.io/dry/dryup.sh | sh

Le script d’installation déplacera automatiquement le fichier binaire non corrigé vers + / usr / local / bin:

Outputdryup: Moving dry binary to its destination
dryup: dry binary was copied to /usr/local/bin, now you should 'sudo chmod 755 /usr/local/bin/dry'

Mettez à jour les autorisations sur le binaire, comme nous l’avons fait à l’étape 1.

sudo chmod 755 /usr/local/bin/dry

Maintenant, essayez de courir à sec.

dry

En haut à droite de la section initiale + Containers +, les lignes d’état + Swarm + et + Node role + qui étaient vides aux étapes précédentes sont maintenant remplies:

OutputSwarm:      active
Node role:  manager
Nodes:      3

Vous verrez également deux conteneurs avec des noms d’images longs répertoriés. Les trois autres conteneurs sont répartis entre les autres nœuds de travail Swarm et ont été définis par le service exemple + webserver + du didacticiel relatif aux prérequis.

L’installation sèche du gestionnaire de grappes est prête, voyons maintenant comment fonctionne sec avec Docker Swarm.

Étape 7 - Interaction avec les nœuds Docker Swarm (facultatif)

Dans la section + Containers +, appuyez sur + 4 + pour naviguer dans la section + Nodes +.

image: https: //i.imgur.com/9q4uXRr.png [Section des nœuds du tableau de bord]

Cette section présente des métriques utiles pour chaque nœud, telles que son rôle (responsable ou travail), son statut et sa disponibilité. La ligne en haut de l’écran affiche des informations sur la consommation de ressources.

À partir de là, utilisez les touches fléchées pour sélectionner + node-2 +, puis appuyez sur + ENTER. Ceci affichera les tâches de chaque nœud:

image: https: //i.imgur.com/lZeJ9pN.png [Tableau de bord des tâches de nœud-2]

En ce qui concerne le service + webserver +, + node-2 + contient le premier et le deuxième des cinq conteneurs en réseau. Les tâches de cette vue montrent que le + CURRENT STATE des deux conteneurs est actif et indique leur durée d’exécution. La numérotation de vos propres noms de conteneur peut varier. Cela dépend du nœud de travail auquel les conteneurs sont attribués, ce qui est déterminé par la commande the service Docker.

Revenez à la section + Nodes + en appuyant sur + ESC + afin que nous puissions explorer certaines des combinaisons de touches de dry ici.

Une tâche courante lors de l’utilisation de Docker Swarm consiste à modifier l’état ou la disponibilité de certains nœuds. Sélectionnez à nouveau + node-1 + et appuyez sur + CTRL + A + pour afficher l’invite + Définir la disponibilité +.

OutputChanging node availability, please type one of ('active'|'pause'|'drain')

Tapez + drain + et confirmez-le avec + ENTER +.

L’option de drain empêche un nœud de recevoir de nouvelles instructions du gestionnaire de cluster Swarm et est généralement utilisée pour la maintenance planifiée. L’utilisation de drain signifie également que le gestionnaire de nœuds lance une réplique sur un nœud distinct défini sur la disponibilité active, ce qui compense le temps d’indisponibilité temporaire du nœud drainé.

Lorsque vous soumettez la commande + drain +, le message d’état en haut à gauche confirmera l’action:

Vous verrez dans le message d’état qui apparaît en haut à gauche, une confirmation de cette action. Cette modification est également reflétée dans la colonne + AVAILABILITY +:

OutputNode  availability is now drain

Vous remarquerez également le changement reflété dans la colonne + AVAILABILITY +.

Pour restaurer la sauvegarde + node-2 +, mettez-la de nouveau en surbrillance et appuyez sur + CTRL + A + pour rétablir l’invite + Set Availability +. Cette fois, tapez + active + et appuyez sur + ENTER.

Vous verrez également un message de confirmation pour cette action:

OutputDocker daemon: update  availability is now active

L’option que nous n’avons pas utilisée, + pause +, arrête temporairement tous les processus contenus dans chaque conteneur trouvé dans le nœud jusqu’à ce qu’ils soient à nouveau définis comme + active +.

Dans la dernière étape, nous allons interagir avec les services Docker Swarm sur le sec.

Étape 8 - Interaction avec les services Docker Swarm (facultatif)

Appuyez sur + 5 + pour afficher la section + Services de dry.

image: https: //i.imgur.com/c7DMszC.png [Section des services du tableau de bord]

Le didacticiel prérequis n’a configuré qu’un seul service, + webserver +, qui est configuré pour répliquer des instances (c.-à-d. créer de nouveaux conteneurs) si nécessaire, au maximum cinq. Cette vue confirme que les répliques + 5/5 + sont actives et affiche le mappage de ports que le service utilise ainsi que ses tâches distribuées.

Nous pouvons utiliser dry pour voir beaucoup plus de détails sur le service. Appuyez sur + ENTER + lorsque le service + webserver + est en surbrillance.

image: https: //i.imgur.com/Vob3wMS.png [Résumé des tâches du serveur Web du tableau de bord]

Cette vue de service détaillée contient de nombreuses informations sur l’état du service et de ses nœuds Swarm.

Fait intéressant, vous remarquerez peut-être que sept tâches sont répertoriées ici, bien que le service ait été défini sur cinq. En effet, Docker Swarm a créé deux tâches de réplica supplémentaires plus tôt que lors du test de l’étape 7, lorsque nous avons basculé + node-2 + en mode vidange.

Nous pouvons également utiliser dry pour augmenter le nombre maximal de répliques. Appuyez sur + ESC + pour revenir à la section + Services +, puis entrez + CTRL + S + en mettant en surbrillance le service + webserver +. Cela affichera l’invite de mise à l’échelle:

OutputScale service. Number of replicas?

Dans ce contexte, la mise à l’échelle de ce service serait utile pour répondre à toute demande de ressources supplémentaires en raison du trafic Web croissant. Augmentons le nombre de répliques à 8 en entrant «+ 8 » dans l’invite et en appuyant sur ` ENTER +`.

Recherchez ce message de confirmation pour confirmer l’action:

OutputDocker daemon: update v6gbc1ms0pi scaled to 8 replicas

Vous pouvez voir les listes de vues + Services + + 8/8 + pour le service maintenant.

Si vous souhaitez supprimer entièrement un service, mettez-le en surbrillance et appuyez sur les touches + CTRL + R + pour afficher l’invite de suppression de service:

OutputAbout to remove the selected service. Do you want to proceed? y/N

Vous pouvez l’utiliser pour supprimer le service + webserver + si vous n’en avez plus besoin ou si vous ne souhaitez plus l’exécuter.

Enfin, appuyez sur + Q + pour quitter le tableau de bord et quitter le programme.

Conclusion

En suivant ce didacticiel, vous avez configuré à sec un hôte Docker et un gestionnaire de cluster Docker Swarm. Ce didacticiel a également abordé l’essentiel des fonctionnalités de dry, telles que l’interaction avec les conteneurs, les images et les réseaux Docker, ainsi que les nœuds et services Docker Swarm.

Il existe une méthode secondaire de connexion à sec à un hôte distant exécutant Docker, qui utilise l’option + -H + avec l’adresse IP de l’hôte distant lors de l’exécution à sec. Ceci est utile dans les cas où vous êtes incapable ou indifférent à l’installation du binaire sec.

À partir de là, essayez d’appliquer à sec vos propres configurations Docker afin d’explorer comment il peut rationaliser votre flux de travail. Vous pouvez explorer les combinaisons de touches supplémentaires de dry dans de notre fichier LISEZMOI.

Related