Salut, j’essaie de comprendre pourquoi et comment certains des processus que Discourse lance s’exécutent sous mon compte utilisateur Linux normal non root :
J’exécute actuellement Discourse sur Clear Linux, ce n’est donc pas un système de base tout à fait standard, mais j’ai observé le même comportement avec une installation de Discourse sur Debian. Dans le système actuel, je me suis connecté avec mon compte utilisateur rahim12 et j’ai fait un sudo su avant d’installer et de configurer tout ce qui concerne le conteneur Discourse. Et lors de mes tests précédents sur Debian, je me suis connecté directement au système en tant que root. Est-il donc normal que certains processus comme les workers Unicorn s’exécutent sous mon compte utilisateur normal, et comment ont-ils su l’utiliser ? Sont-ils automatiquement lancés sous l’UID Linux de 1000 ?
C’est une particularité du fonctionnement de Docker.
L’utilisateur discourse à l’intérieur du conteneur a l’UID 1000. Ainsi, si vous regardez la liste des processus à l’extérieur du conteneur, elle affichera l’utilisateur qui correspond à l’UID 1000.
Dans mon cas, elle les afficherait comme claudia, car c’est le nom d’utilisateur que tous mes serveurs utilisent pour l’UID 1000.
Ah, intéressant, donc le système d’exploitation hôte effectue une recherche du nom d’utilisateur pour l’UID 1000 sur l’hôte, mais il appartient en fait à un UID différent 1000 à l’intérieur du conteneur ?
Et cela m’a déjà joué des tours à quelques reprises car sur l’un de mes serveurs de développement locaux, j’ai un conteneur Docker qui exécute des processus sous l’UID 1001 (le nom d’utilisateur interne du conteneur est WebDev) et sur le système d’exploitation hôte, il affiche un compte désactivé depuis 2019 mais qui doit toujours exister pour des raisons historiques.
Merci beaucoup de l’avoir expliqué, c’est donc une bizarrerie assez étrange de Docker. En tant qu’administrateur Linux conventionnel, habitué à installer et configurer manuellement chaque composant de la pile, je ne suis pas entièrement à l’aise avec le paradigme de conteneurisation opaque et ses scripts d’installation automagiques qui tirent les dépendances et les configurations d’un million de sources différentes. Mais il est difficile de discuter de la vitesse et de la reproductibilité du déploiement de Discourse ainsi que du serveur de messagerie dockerisé que j’utilise, donc je ne me plains pas.
J’aurais probablement dû mentionner que c’est une particularité de Docker car c’est une particularité des conteneurs Linux en général.
Essentiellement, ils sont similaires aux jails *BSD, mais en fait beaucoup plus stricts dans la façon dont ils isolent les choses.
Personnellement, je ne suis pas fan, mais je comprends tout à fait pourquoi Discourse utilise Docker. L’isolation rend beaucoup plus difficile pour les changements d’hôte d’affecter Discourse. En fait, à l’exception d’une mise à jour du noyau qui a brièvement cassé Docker il y a quelque temps, je n’ai jamais eu de mise à niveau de l’hôte qui ait cassé Discourse.