Ubuntu n00b ici. Je bricole un conteneur Docker que j'ai créé à l'aide du fichier Dockerfile suivant:
FROM ubuntu
CMD ["tail","-f","/dev/null"]
À l'intérieur du conteneur, en tant qu'utilisateur root, j'essaie d'exécuter visudo
et d'obtenir la réponse suivante:
bash: visudo: commande non trouvée
J'ai couru ls /etc
et il semble que je n'ai pas non plus de fichier sudoers.
Y a-t-il quelque chose de spécial que j'aurais dû mettre dans mon Dockerfile pour les faire exister?
Je l'ai travaillé à partir de autre réponse : Sudo
n'est pas installé par défaut. Pour installer Sudo
:
apt-get update
apt-get install Sudo
Lorsque vous avez construit le conteneur, vous êtes root afin de pouvoir créer des utilisateurs sans Sudo.
Si vous dérivez une image de conteneur qui contient déjà une directive USER
, vous pouvez toujours revenir à la racine avec USER root
avant d'utiliser des commandes privilégiées. Vous pouvez ultérieurement émettre une autre directive USER
pour redevenir l'utilisateur d'exécution. En d'autres termes:
Une image qui définit un utilisateur sans privilège:
# "plainuser" image
FROM debian
RUN groupadd -g 1000 appgroup && useradd -g appgroup -u 1000 appuser
USER appuser
ENTRYPOINT ["/usr/bin/id"]
Exécutez avec docker run --rm plainuser
pour vérifier qu'il fonctionne bien avec l'utilisateur appuser
.
Dérivons-le:
# "otheruser" image
FROM plainuser
USER root # Become root again
RUN groupadd -g 1001 appgroup2 && useradd -g appgroup2 -u 1001 appuser2
USER appuser2 # Set new execution user
Exécuter avec docker run --rm otheruser
.