मैं स्क्रिप्ट से डॉकर कंटेनर में रूट पासवर्ड कैसे सेट कर सकता हूं?

मेरे पास एक स्क्रिप्ट है जो होस्ट पर चलती है और एक डॉकर कंटेनर बनाती/शुरू/रोकती है । मैं कंटेनर के भीतर रूट उपयोगकर्ता के पासवर्ड को बदलने के लिए स्क्रिप्ट चाहूंगा ।

चूंकि कंटेनर एक एसएसएच सर्वर है, इसलिए मैंने कोशिश की:sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'

लेकिन यह काम नहीं करता. आगे बढ़ने और इसे डीबग करने में अधिक समय बिताने से पहले, मैं जानना चाहूंगा कि क्या ऐसा करने का कोई बेहतर तरीका है ।

मैं समझता हूं कि उचित "डॉकर तरीका" एक स्क्रिप्ट बनाना है जो डॉकरफाइल द्वारा चलाया जाता है, जो पासवर्ड को साझा वॉल्यूम से खींचता है और इसे रूट पासवर्ड के रूप में सेट करता है । यह जटिल लगता है, लेकिन मुझे पता है कि यह कैसे करना है और मेरे द्वारा उपयोग की जाने वाली एक और डॉकर छवि के लिए अच्छा काम करता है । लेकिन मैं इसके लिए ऐसा नहीं करना चाहता ।

मुझे बस एक कमांड की आवश्यकता है जो उपयोगकर्ता के पासवर्ड को गैर-अंतःक्रियात्मक रूप से बदलने के लिए डॉकर या एसएसएच का उपयोग करता है ।

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

एक पॉपअप खोलेगा, पासवर्ड मांगेगा, और वापस आएगा it.No पासवर्ड स्क्रिप्ट में संग्रहीत

यदि आपके पास एक डॉकर कंटेनर है जहां आपको सुरक्षा के बारे में ज्यादा परवाह किए बिना पासवर्ड सेट करने की आवश्यकता है,तो आप डॉकरफाइल में एक स्टेटमेंटिन जोड़ सकते हैं:

RUN echo "root:root" | chpasswd

यह डॉकर से संबंधित नहीं है । आपको स्पष्ट रूप से कहने की आवश्यकता है passwd कि आप पासवर्ड प्रदान करने जा रहे हैं stdin.

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

यह उबंटू 14.04.4 एलटीएस पर त्रुटिपूर्ण रूप से काम करता है:

स्क्रिप्ट में जो कंटेनर का पुनर्निर्माण करता है (जो "होस्ट" पर चलना चाहिए), इन पंक्तियों को जोड़ें:

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