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

7

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.

    
por Chris 27.04.2016 / 11:16

3 respostas

0

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
    
por 04.06.2016 / 12:54
3

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
    
por 27.04.2016 / 11:28
1
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
    
por 16.03.2018 / 10:06