J'utilise une image Docker qui a été créée à l'aide de la commande USER pour utiliser un utilisateur non root appelé dev
. À l'intérieur d'un conteneur, je suis "dev", mais je souhaite modifier le /etc/hosts
fichier.
Je dois donc être root. J'essaye la commande su, mais on me demande d'entrer le mot de passe root.
Quel est le mot de passe de l'utilisateur root par défaut dans un conteneur Docker?
docker exec -u 0 -it mycontainer bash
. (voirH6
la réponse de)Réponses:
Vous pouvez vous connecter au conteneur Docker à l'aide de l'utilisateur root (ID = 0) au lieu de l'utilisateur par défaut fourni lorsque vous utilisez l'
-u
option. Par exemplede la documentation Docker
la source
docker run -u 0 -it mycontainer bash
Finalement, j'ai décidé de reconstruire mes images Docker, afin de changer le mot de passe root par quelque chose que je saurai.
ou
la source
Il y a plusieurs façons de procéder.
Pour exécuter le Docker en remplaçant le paramètre USER
ou
Créez les autorisations de fichier nécessaires, etc., lors de la création de l'image dans le fichier Docker
Si tous les packages sont disponibles dans votre image Linux,
chpasswd
dans le dockerfile avant l'utilitaire USER.la source
Je peux le faire fonctionner avec la commande ci-dessous.
la source
J'ai eu exactement ce problème de ne pas pouvoir su à root parce que je courais dans le conteneur en tant qu'utilisateur non privilégié.
Mais je ne voulais pas reconstruire une nouvelle image comme le suggèrent les réponses précédentes.
Au lieu de cela, j'ai constaté que je pouvais accéder au conteneur en tant que root en utilisant 'nsenter', voir: https://github.com/jpetazzo/nsenter
Déterminez d'abord le PID de votre conteneur sur l'hôte:
Utilisez ensuite nsenter pour entrer le conteneur en tant que root
la source
sudo nsenter --target <PID> --mount --uts --ipc --net --pid
la source
Obtenez un shell de votre conteneur en cours d'exécution et modifiez le mot de passe root:
la source
Pour créer / modifier un mot de passe root dans un conteneur en cours d'exécution
la source
Le mot de passe est 'ubuntu' pour l'utilisateur 'ubuntu' (au moins dans docker pour ubuntu: 14.04.03).
NB: 'ubuntu' est créé après le démarrage du conteneur donc, si vous faites juste ceci:
Vous obtiendrez directement l'invite root. De là, vous pouvez forcer le changement de mot de passe de root, valider le conteneur et éventuellement le taguer (avec -f) sur ubuntu: latest comme ceci:
Vous devez reconstruire vos éventuelles dépendances sur ubuntu: latest.
la source
Je suggérerais qu'une meilleure solution consiste à donner l'
--add-host NAME:IP
argument de docker run lors du démarrage du conteneur. Cela mettra à jour le/etc/hosts/
fichier sans avoir besoin de devenir root.Sinon, vous pouvez remplacer le
USER
paramètre en attribuant le-u USER
drapeau àdocker run
. Je déconseille cependant cela, car vous ne devriez pas vraiment changer les choses dans un conteneur en cours d'exécution. Au lieu de cela, apportez vos modifications dans un Dockerfile et créez une nouvelle image.la source
-u
indicateur pour changer d'utilisateur. Je ne pense pas que vous puissiez le faire depuis l'intérieur du conteneur.Vous pouvez utiliser la commande root USER dans votre Dockerfile.
la source
Lorsque vous démarrez le conteneur, vous serez root mais vous ne saurez pas quel est le pw de root. Pour le régler sur quelque chose que vous connaissez, utilisez simplement "root passwd". Capturez / validez le conteneur pour enregistrer vos actions.
la source
Par défaut, les conteneurs Docker s'exécutent en tant que
root
qu'utilisateur.Si vous utilisez toujours le conteneur, vous pouvez utiliser la
exit
commande pour revenir àroot
utilisateur (utilisateur par défaut) au lieu d'exécuter à nouveau le conteneur.Exemple -
la source
essayez la commande suivante pour obtenir l'accès root
la source
Dans certains cas, vous devez être capable de faire des choses comme ça sous un utilisateur avec
sudo
(par exemple, l'application exécutée dans le conteneur fournit un shell aux utilisateurs). Ajoutez simplement ceci dans votre Dockerfile:Maintenant, sous l'utilisateur d'image par défaut,
user
vous pourrezsudo
avec le mot de passe défini sur la ligne 3.Découvrez comment générer un hachage de mot de passe pour
useradd
ici ou ici .la source