Isso funciona perfeitamente no Ubuntu 14.04.4 LTS:
No script que recria o contêiner (que deve estar em execução no "host"), adicione estas linhas:
$PASS='<a-good-password>'
echo -e "$PASS\n$PASS" | sudo docker exec -i <container-id-or-name> passwd
Eu tenho um script que é executado no host e cria / inicia / pára um contêiner docker. Gostaria que o script alterasse a senha do usuário raiz no contêiner.
Como o contêiner é um servidor ssh, tentei:
sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'
mas não funciona. Antes de prosseguir e gastar mais tempo a depurar, gostaria de saber se existe uma maneira mais inteligente de o fazer.
Eu entendo que o "modo docker" adequado é criar um script que é executado pelo Dockerfile, que extrai a senha de um volume compartilhado e a define como a senha raiz. Isso parece complicado, mas sei como fazê-lo e funciona bem para outra imagem de janela de encaixe que uso. Mas eu não quero fazer isso por isso.
Eu só preciso de um comando que use o Docker ou o ssh para alterar a senha de um usuário de maneira não interativa.
Isso funciona perfeitamente no Ubuntu 14.04.4 LTS:
No script que recria o contêiner (que deve estar em execução no "host"), adicione estas linhas:
$PASS='<a-good-password>'
echo -e "$PASS\n$PASS" | sudo docker exec -i <container-id-or-name> passwd
Isso não está relacionado ao Docker. Você precisa explicitamente dizer passwd
que você irá fornecer a senha de stdin
.
echo 'newpassword' |passwd root --stdin
PASSWORD=$(zenity --password --title="Docker" 2>/dev/null)
abrirá um pop-up, pedindo senha e o retornará. Nenhuma senha armazenada no script
Se você tiver um contêiner docker no qual precisa definir uma senha, sem se preocupar muito com segurança, você poderia adicionar uma declaração no Dockerfile:
RUN echo "root:root" | chpasswd