Je fais des tests sur le docker et les conteneurs et je me demandais:
Existe-t-il une méthode que je peux utiliser pour rechercher tous les processus associés à un conteneur Docker par son nom ou son ID du point de vue de l'hôte.
Après tout, à la fin de la journée, un conteneur est un ensemble de processus virtualisés.
Vous pouvez utiliser la commande docker top
. Cette commande répertorie tous les processus en cours d'exécution dans votre conteneur.
Par exemple, cette commande sur un conteneur de processus unique sur ma boîte de dialogue affiche:
UID PID PPID C STIME TTY TIME CMD
root 14097 13930 0 23:17 pts/6 00:00:00 /bin/bash
Toutes les méthodes mentionnées par d’autres peuvent également être utilisées, mais celle-ci devrait être la plus simple.
Mettre à jour :
Pour obtenir simplement l'ID de processus principal dans le conteneur, utilisez cette commande:
docker inspect -f '{{.State.Pid}}' <container id>
docker-proxy
.# PID of the docker daemon
ps aux | grep -E 'docker (-d|daemon)'
root 665 0.0 0.4 1521560 17156 ? Ssl janv.06 5:47 /usr/bin/docker -d -H fd://
# find child processes of the docker daemon
pgrep -P 665
4076
4135
4210
4226
4784
4788
# figure out details of a process
ps 4076
PID TTY STAT TIME COMMAND 4076 ? Ssl 10:45 /usr/bin/redis-server 0.0.0.0:6379
# repeat for other child processes
Un autre moyen d'obtenir une vue d'ensemble de tous les processus Docker s'exécutant sur un hôte consiste à utiliser des outils systemd génériques basés sur cgroup.
systemd-cgls
affichera tous nos groupes de contrôle et les processus qui les exécutent dans une arborescence, comme ceci:
├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
├─docker
│ ├─070a034d27ed7a0ac0d336d72cc14671584cc05a4b6802b4c06d4051ce3213bd
│ │ └─14043 bash
│ ├─dd952fc28077af16a2a0a6a3231560f76f363359f061c797b5299ad8e2614245
│ │ └─3050 go-cron -s 0 0 * * * * -- automysqlbackup
Comme chaque conteneur Docker a son propre groupe de contrôle, vous pouvez également voir les conteneurs Docker et leurs processus hôtes correspondants de cette manière.
Deux propriétés intéressantes de cette méthode:
Vous pouvez également utiliser systemd-cgtop
pour obtenir une vue d'ensemble de l'utilisation des ressources des conteneurs Docker, similaire à top
.
Soit dit en passant: étant donné que les services systemd correspondent également à des groupes de contrôle, ces méthodes sont également applicables aux services systemd non dockérisés.
docker ps
liste les conteneurs de menu fixe en cours d'exécution.
docker exec <id|name> ps
vous indiquera les processus en cours d'exécution.
Statistiques de Docker "ID conteneur" Affiche la consommation de ressources avec pid ou simplement ps Docker.
Cette feuille de triche peut probablement être utile . http://theearlybirdtechnology.com/2017/08/12/docker-cheatsheet/