Como posso definir a senha raiz em um contêiner docker a partir de um script?

Eu tenho um script que é executado no host e cria / inicia / interrompe um contêiner docker. Gostaria que o script alterasse a senha do usuário raiz dentro do 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 ir em frente e gastar mais tempo depurando-o, gostaria de saber se há uma maneira mais inteligente de fazê-lo.

Eu entendo que a "maneira docker" adequada é fazer um script executado pelo Dockerfile, que extrai a senha de um volume compartilhado e a define como a senha raiz. Isso parece complicado, mas eu sei como fazer isso e funciona bem para outra imagem do docker que uso. Mas eu não quero fazer isso por este.

Eu só preciso de um comando que use Docker ou ssh para alterar a senha de um usuário de forma não interativa.

PASSWORD=$(zenity --password --title="Docker" 2>/dev/null)

abrirá um pop-up, pedindo senha e retornará it.No senha armazenada no script

Se você tiver um contêiner docker onde precise definir uma senha, sem se importar muito com a segurança, poderá adicionar uma declaraçãono Dockerfile:

RUN echo "root:root" | chpasswd

Isso não está relacionado ao Docker. Você precisa dizer explicitamente passwd que você vai fornecer senha de stdin.

user='root'pass='newpassword'chpasswd <<<"$user:$pass"

Isso funciona perfeitamente no Ubuntu 14.04.4 LTS:

No script que reconstrói o contêiner (que deve estar sendo executado no "host"), adicione essas linhas:

$PASS='<a-good-password>'echo -e "$PASS\n$PASS" | sudo docker exec -i <container-id-or-name> passwd