Как я могу установить пароль root в контейнере docker из скрипта?

У меня есть скрипт, который запускается на хосте и создает / запускает / останавливает контейнер docker. Я бы хотел, чтобы скрипт изменил пароль пользователя root в контейнере.

Поскольку контейнер является ssh-сервером, я попытался:sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'

но это не работает. Прежде чем идти дальше и тратить больше времени на его отладку, я хотел бы знать, есть ли более разумный способ сделать это.

Я понимаю, что правильный "способ docker" заключается в создании скрипта, который запускается Dockerfile, который извлекает пароль из общего тома и устанавливает его в качестве пароля root. Это звучит сложно, но я знаю, как это сделать, и хорошо работает для другого образа docker, который я использую. Но я не хочу делать это ради этого.

Мне просто нужна команда, которая использует Docker или ssh для изменения пароля пользователя неинтерактивно.

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

откроется всплывающее окно с запросом пароля и вернет его.Пароль не хранится в скрипте

Если у вас есть контейнер docker, в котором вам нужно установить пароль, не особо заботясь о безопасности, вы можете добавить оператор в Dockerfile:

RUN echo "root:root" | chpasswd

Это не связано с Docker. Вам нужно явно сказать passwd что вы собираетесь предоставить пароль от stdin.

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

Это работает безупречно в Ubuntu 14.04.4 LTS:

В скрипте, который перестраивает контейнер (который должен быть запущен на "хосте"), добавьте эти строки:

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