스크립트를 사용하여 도커 컨테이너의 루트 비밀번호를 설정하는 방법 똑똑한 방법이 있는지 알고

호스트에서 실행되고 도커 컨테이너를 생성 / 시작 / 중지하는 스크립트가 있습니다. 컨테이너 내에서 루트 사용자의 비밀번호를 변경하는 스크립트를 원합니다.

컨테이너는 ssh 서버이므로 다음을 시도했습니다.
sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'

그러나 작동하지 않습니다. 계속 진행하고 디버깅에 더 많은 시간을 소비하기 전에 더 똑똑한 방법이 있는지 알고 싶습니다.

올바른 “도커 방식”은 Dockerfile에 의해 실행되는 스크립트를 만드는 것입니다.이 스크립트는 공유 볼륨에서 비밀번호를 가져와 루트 비밀번호로 설정합니다. 이것은 복잡하게 들리지만 사용 방법을 알고 사용중인 다른 도커 이미지에 잘 작동합니다. 그러나 나는 이것을 위해 그것을하고 싶지 않습니다.

Docker 또는 ssh를 사용하여 비 대화식으로 사용자 비밀번호를 변경하는 명령이 필요합니다.



답변

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

암호를 묻는 팝업 창이 열리고 반환됩니다. 스크립트에 비밀번호가 저장되지 않았습니다

보안에 신경 쓰지 않고 암호를 설정 해야하는 도커 컨테이너가있는 경우 Dockerfile에 명령문을 추가 할 수 있습니다.

RUN echo "root:root" | chpasswd

답변

Docker와 관련이 없습니다. 의 passwd비밀번호를 제공 하겠다고 명시 적으로 말해야 합니다 stdin.

echo 'newpassword' |passwd root --stdin

답변

이것은 Ubuntu 14.04.4 LTS에서 완벽하게 작동합니다.

컨테이너를 다시 빌드하는 스크립트 ( “host”에서 실행 중)에서 다음 행을 추가하십시오.

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