¿Cómo puedo establecer la contraseña de root en un contenedor de Docker desde un script?

Tengo un script que se ejecuta en el host y crea/inicia/detiene un contenedor docker. Me gustaría que el script cambie la contraseña del usuario raíz dentro del contenedor.

Como el contenedor es un servidor SSH, intenté:sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'

pero no funciona. Antes de seguir adelante y dedicar más tiempo a depurarlo, me gustaría saber si hay una forma más inteligente de hacerlo.

Entiendo que la "forma de docker" adecuada es hacer un script que sea ejecutado por el Dockerfile, que extrae la contraseña de un volumen compartido y la establece como la contraseña raíz. Esto suena complicado, pero sé cómo hacerlo y funciona bien para otra imagen de docker que uso. Pero no quiero hacerlo por este.

Solo necesito un comando que use Docker o ssh para cambiar la contraseña de un usuario de forma no interactiva.

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

se abrirá una ventana emergente, solicitando contraseña y regresará it.No contraseña almacenada en el script

Si tiene un contenedor docker en el que necesita establecer una contraseña,sin preocuparse mucho por la seguridad, puede agregar un statementen el Dockerfile:

RUN echo "root:root" | chpasswd

Esto no está relacionado con Docker. Necesitas decir explícitamente passwd que va a proporcionar la contraseña de stdin.

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

Esto funciona perfectamente en Ubuntu 14.04.4 LTS:

En el script que reconstruye el contenedor (que debería estar ejecutándose en el "host"), agregue estas líneas:

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