J'ai un script qui s'exécute sur l'hôte et crée / démarre / arrête un conteneur Docker. J'aimerais que le script change le mot de passe de l'utilisateur root dans le conteneur.
Puisque le conteneur est un serveur ssh, j'ai essayé:
sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'
mais ça ne marche pas. Avant d'aller plus loin et de passer plus de temps à le déboguer, j'aimerais savoir s'il existe une façon plus intelligente de le faire.
Je comprends que la bonne "manière de docker" consiste à créer un script exécuté par le Dockerfile, qui extrait le mot de passe d'un volume partagé et le définit comme mot de passe root. Cela semble compliqué, mais je sais comment le faire et fonctionne bien pour une autre image de docker que j'utilise. Mais je ne veux pas le faire pour celui-ci.
J'ai juste besoin d'une commande qui utilise Docker ou ssh pour modifier le mot de passe d'un utilisateur de manière non interactive.
echo username:newpassword | chpasswd
Ce n'est pas lié à Docker. Vous devez explicitement dire
passwd
que vous allez fournir un mot de passestdin
.la source
--stdin
a été déprécié sur les nouveaux systèmes Linux. Utilisez à lachpasswd
place:echo username:newpassword | chpasswd
Cela fonctionne parfaitement sur Ubuntu 14.04.4 LTS:
Dans le script qui reconstruit le conteneur (qui devrait être exécuté sur "l'hôte"), ajoutez ces lignes:
la source
usermod
plutôt quepasswd
.