Maison >Opération et maintenance >Docker >Comment déboguer Docker à distance (débogage)

Comment déboguer Docker à distance (débogage)

PHPz
PHPzoriginal
2023-04-18 10:24:142599parcourir

Avec la popularité de l'architecture des microservices, la technologie de conteneurisation est devenue de plus en plus populaire. Dans de nombreux cas, nous devons déboguer les applications exécutées dans des conteneurs afin de résoudre les problèmes et d'optimiser les performances. Le débogage à distance dans Docker est un besoin courant. Cet article présentera comment déboguer à distance dans Docker, ainsi que certains problèmes et techniques que vous pourriez rencontrer au cours du processus.

1. Installer les outils de débogage dans le conteneur
Pour déboguer dans un conteneur Docker, vous devez installer les outils de débogage dans le conteneur. Ici, nous prenons le système Debian comme exemple de conteneur pour présenter comment installer les outils de débogage.

1. Démarrez d'abord un conteneur Debian :

docker run -it --name=debug debian /bin/bash

2 Après avoir entré le conteneur, mettez à jour la liste des paquets :

apt-get update

3. Installez l'outil de débogage GDB :

apt-get install -y gdb

2. Connectez l'outil de débogage à l'application
Après avoir installé l'outil de débogage, nous devons connecter l'outil de débogage à l'application en cours d'exécution.

1. Tout d'abord, vous devez activer le débogage à distance via les variables d'environnement lors de la création du conteneur :

docker run -it -e DEBUG=true --name=myapp myimage

2 Obtenez le PID de l'application. Il existe de nombreuses façons d'obtenir le PID d'une application, par exemple en utilisant la commande Linux ps :

ps aux | grep myapp

3. Connectez le débogueur à l'application :

gdb -ex "set follow-fork-mode child " -p ${pid}

3. Débogage
Une fois connecté à l'application, nous pouvons commencer le débogage. Voici quelques commandes GDB couramment utilisées :

1. Définir les points d'arrêt :

b [file:]function[:line]

2. Commencez à exécuter le programme :

r [args]

3. exécution :

s

4. Ignorer la fonction actuelle :

n

5. Afficher les variables :

print var

6. , Vous devrez peut-être vous connecter via un pare-feu, auquel cas vous pourriez rencontrer des problèmes de blocage de port. Dans ce cas, nous pouvons modifier l'attribut EXPOSE du conteneur pour exposer les ports requis lors du démarrage du conteneur.

Par exemple, nous souhaitons exposer le port 3000 du conteneur :

docker run -it -e DEBUG=true --name=myapp -p 3000:3000 myimage

Cela nous permettra d'accéder au conteneur sur le Port de la machine locale 3000.

5. Rencontre avec des situations anormales

Pendant le débogage à distance, vous pouvez rencontrer certaines des situations anormales suivantes. Voici quelques solutions :

1. Les conteneurs ne prennent pas en charge le débogage GDB

Certains conteneurs ne prennent pas en charge le débogage GDB car ils ne disposent pas des informations de débogage nécessaires. La solution consiste à créer une nouvelle image basée sur la version de débogage, qui contient les informations de débogage nécessaires. Ensuite, déboguez dans cette image.


2. Connexion refusée

Cela peut être dû au fait que le pare-feu n'autorise pas les connexions à distance au conteneur ou que le conteneur n'est pas configuré correctement. Assurez-vous que les ports sont correctement exposés et voyez si le conteneur est correctement configuré.


3. Impossible de trouver les informations de débogage

Si l'application ne dispose pas des informations de débogage correctes, vous devrez peut-être recompiler l'application et utiliser l'indicateur -debug pour inclure les informations de débogage dans l'application. Si vous n'avez pas accès au code source, vous devrez peut-être contacter le développeur.


Résumé

Le débogage à distance dans Docker est une compétence très utile qui peut nous aider à dépanner et à résoudre rapidement les problèmes et à améliorer les performances des applications. Cet article présente les étapes de base du débogage à distance dans Docker et comment résoudre certains problèmes qui peuvent survenir. En maîtrisant ces compétences de base, vous serez en mesure de mieux comprendre la technologie de conteneurisation et de détecter et résoudre les problèmes plus rapidement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn