Conteneur Docker avec sorties Samba sans aucun message

8

Nous avons un serveur exécutant CentOS, sur lequel il existe plusieurs services dans des conteneurs Docker pour les séparer des changements d'hôte.

Vendredi dernier, nous avons effectué une mise à jour sur CentOS, et depuis lors, l'un de nos services démarre et se ferme immédiatement. Les 15 autres services sont très bien.

J'ai cloné la configuration du conteneur, changé le nom du conteneur et reconstruit avec le même problème: le conteneur démarre puis se termine sans aucun message.

Le conteneur est dérivé du conteneur de samba de David Personette . La commande réelle qui se ferme maintenant mais qui ne l'a pas été est:

exec ionice -c 3 smbd -FS

Dois-je rétrograder docker cela aura-t-il des effets secondaires? Y a-t-il autre chose que je puisse faire pour que cela fonctionne à nouveau? Nous avons choisi des conteneurs à abstraire du système d'exploitation, cette abstraction n'est-elle pas aussi bonne que prévu?

John
la source
Que se passe-t-il si vous exécutez un shell dans le conteneur, puis exécutez cette commande manuellement?
jordanm
J'ai eu du mal à essayer, le conteneur a un point d'entrée et nécessite des paramètres de ligne de commande pour démarrer. Et si cela fonctionnait, je n'aurais aucune idée de comment l'utiliser dans la production, est-ce possible?
john

Réponses:

8

Le conteneur se fermera sans aucun commentaire, sauf si vous augmentez le niveau de débogage. Vous pouvez utiliser quelque chose comme --debuglevel=4.

Une fois que vous avez fait cela, reconstruit et redémarrez le conteneur, vous devriez obtenir quelque chose à la fin comme:

Server exit (EOF on stdin)

Et cela pointe vers la solution, changez l' smbdinvocation en:

exec ionice -c 3 smbd -FS < /dev/null

et votre conteneur ne devrait plus sortir directement.

Je ne sais pas ce qui cause ce changement incompatible en amont, ni pourquoi cela n'a pas été testé par rapport aux entrées Dockerhub existantes.

J'ai également cassé deux de mes conteneurs lors de la mise à niveau vers la version 1.11. et lors de la rétrogradation à 1.10.3, a rencontré le Cannot stop container .... Container does not exist: container destroyedbug redouté . J'ai dû arrêter Docker, effacer toute l'histoire, donc je ne peux pas vraiment le recommander.

Anthon
la source
Cela m'a aidé à résoudre le problème hier, sans avoir à rétrograder!
john
1
J'ai lu quelque part que l'arrêt de Samba est en fait une fonctionnalité. Il essaie de détecter si son processus parent est mort (EOF sur stdin). Votre solution fonctionne parfaitement.
Martin