Stdout Buffering dans les conteneurs Docker : un cas de Debian contre Ubuntu
Lors de l'exécution de code dans un conteneur Docker, la mise en mémoire tampon stdout peut se produire dans certains cas mais pas dans d’autres. Ce problème est observé dans un scénario où stdout est dirigé à la fois vers la console et un fichier journal à l'aide d'un io.MultiWriter.
Cause première : différences de plate-forme
La racine La cause de ce comportement réside dans les différences de plate-forme entre les images basées sur Debian et les images basées sur Ubuntu. Debian semble mettre en mémoire tampon la sortie standard par défaut, tandis qu'Ubuntu gère la sortie standard de manière synchrone.
Démonstration avec les fichiers Docker
Cela peut être illustré en utilisant deux fichiers Docker, un basé sur Debian:wheezy et l'autre sur Ubuntu:trusty:
# TRUSTY Dockerfile FROM ubuntu:trusty # ... (rest of the Dockerfile as provided in the problem description) # WHEEZY Dockerfile FROM debian:wheezy # ... (rest of the Dockerfile as provided in the problem description)
L'exécution de procwrap dans le conteneur basé sur l'image Wheeze entraîne une sortie standard mise en mémoire tampon, tandis que son exécution dans le conteneur basé sur l'image fiable entraîne sortie standard synchrone. Cependant, l'exécution de procwrap sur une machine virtuelle Debian sans Docker ne présente pas de mise en mémoire tampon standard.
Options de résolution
Pour résoudre ce problème, plusieurs approches peuvent être envisagées :
En fin de compte , la meilleure solution dépend de l'application spécifique et de l'environnement d'exploitation.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3