9
votes

Comment surveiller de manière programmable si un conteneur Docker est sorti?

Je travaille plusieurs conteneurs nommés Docker (200+) sur mon hôte VM. J'ai un script / code manager censé gérer les conteneurs de l'hôte. J'aimerais savoir s'il y a un mécanisme basé sur des événements à être averti lorsqu'un conteneur arrête / échoue. Afin que je puisse redémarrer le conteneur arrêté.

Une solution à laquelle je pourrais penser est de faire une inspection périodique d'inspecter et de regarder state.pid ou état.running pour confirmer l'état.

Mais, au lieu d'interrogation périodique, il serait préférable que le gestionnaire soit notifié avec PID / nom lorsqu'un conteneur échoue de sorte que le conteneur particulier puisse être redémarré.

Sur une note générale, existe-t-il des moyens de surveiller de manière programmable le statut d'un processus à partir d'un processus différent qui n'est pas le parent?


0 commentaires

3 Réponses :


0
votes

Psutil semble faire ce que vous voulez http://pypi.python.org/pypi/psutil De python

importer pstuiti psutil.pids () [1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27 , 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53 , 54, 56, 57, 58, 59, 61, 62, 63, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82 , 94, 97, 98, 117, 118, 137, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 200, 201, 210, 211, 213, 214, 229, 230, 411 , 416, 419, 526, 527, 542, 543, 544, 542, 543, 544, 625, 709, 782, 756, 781, 782, 796, 862, 863, 864, 869, 914, 944, 945, 948 , 954, 996, 1052, 1170, 1174, 1179, 1180, 1183, 1241, 1240, 1323, 1328, 1323, 1328, 1351, 1354, 1351, 1354, 1351, 1354, 1390, 1408, 1457, 1507, 1531 1631, 1662, 1933, 1989, 1981, 1989, 2413, 2422, 2429, 2442, 2429, 2449, 2449, 2449, 2449, 2461, 2457, 2461, 2457, 2461, 2457, 2489, 2490, 2491, 2493, 2491, 2493, 2497 2501, 2505, 2509, 2513, 2524, 2546, 2563, 2567, 2563, 2567, 2563, 2567, 2578, 2573, 2576, 2578, 2586, 2578, 2586, 2595, 2598, 2624, 2644, 2655, 26667, 2687, 2669, 2687, 2689 , 2693, 2699, 2744, 2752, 2785, 2794, 2785, 2804, 2817, 2804, 2817, 2804, 2817, 2804, 2817, 2804, 2817, 2804, 2817, 2804, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2862, 2962, 2862, 2862, 2962, 2962, 2962, 2962, 2972, 2986, 2903, 2986, 2903, 2986, 2903, 2986, 3138, 32371, 3211, 3368, 32371, 3557, 4125, 4352, 4743, 4444, 4743, 4818, 4819, 4818, 4819, 4818, 4841, 4818, 4845, 4818, 4845, 6142, 6363, 6366, 6364, 6378, 6372, 6378, 6372, 6378, 6372, 6378, 6385, 6378, 6385, 6391, 6385, 6391, 6385, 6391, 6385, 6391, 6452, 6518, 6524, 6518, 6524, 6518, 6524, 6531, 6555, 6558, 6601] p = psutil.procession (2862) p.status () 'Dormir'


1 commentaires

Merci. Va regarder dans ça.



3
votes

Si vous voulez simplement redémarrer les conteneurs, pourquoi n'utilisez-vous pas un Politique de redémarrage ?

docker run --restart=always IMAGE


1 commentaires

Merci pour la suggestion. 'Redémarrer' est l'un des cas d'utilisation. Idéalement, je devrais pouvoir prendre plus de décisions que simplement redémarrer du programme Manager.



8
votes

regarder Docker Events - Il y a un événement pour le conteneur 'Die '.

Il existe également une interface HTTP pour obtenir les mêmes informations programmatiquement - voir ici

Vous voudrez peut-être faire une recherche sur le Web pour «Docker Orchestration» - de nombreux projets qui ressortent pour gérer plusieurs conteneurs de la manière dont vous décrivez.


1 commentaires

Merci beaucoup. Docker Events était ce que je cherchais.