मैं वर्तमान में सोच रहा हूं कि मैं --privileged के बिना एन्क्रिप्टेड यूएसबी कुंजी तक कैसे पहुंच सकता हूं। मान लें कि मेरे पास /dev/sda1 एक Luks एन्क्रिप्टेड कुंजी और container एक रनिंग डॉकटर कंटेनर है। यह कुंजी cryptsetup luksOpen /dev/sda1 encrypted_sda1 --key-file=key-file के द्वारा खोली जाती है। तो अब, मेरे पास /dev/mapper/encrypted_sda1 पहुंच योग्य है। अब, मैं mount /dev/mapper/encrypted_sda1 /media/sda1 निष्पादित करता हूं जहां /media मेरे होस्ट और मेरे कंटेनर के बीच साझा किया जाता है।

अब, अपने होस्ट डिवाइस से, मैं /media/sda1 के माध्यम से अपनी कुंजी की सामग्री तक पहुंच सकता हूं। लेकिन मेरे कंटेनर से (बिना privileged के), मैं नहीं कर सकता। मेरे पास /media में sda1 नामक एक खाली निर्देशिका है

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

मुझे वास्तव में समझ में नहीं आता कि जब कंटेनर चल रहा होता है तो मैं होस्ट से USB कुंजी माउंट करते समय /media/sda1 तक क्यों नहीं पहुंच पाता। कोई लीड?

आपका दिन शुभ हो!

0
AmarOk 30 सितंबर 2018, 21:33

1 उत्तर

सबसे बढ़िया उत्तर

--privileged के बजाय, मुझे लगता है कि आपको bind कॉन्फ़िगर करने की आवश्यकता है प्रसार /media माउंट पर। डिफ़ॉल्ट rprivate है, जिसका अर्थ है कि मूल या प्रतिकृति माउंट पॉइंट के भीतर कहीं भी कोई माउंट पॉइंट किसी भी दिशा में प्रचारित नहीं होता है। यदि आप rslave का उपयोग करते हैं, तो मूल माउंट के सबमाउंट (जैसे, /media/sda1) प्रतिकृति में दिखाई देते हैं।

docker container run --mount type=bind,source=/media,target=/media,bind-propagation=rslave …
1
King Chung Huang 1 अक्टूबर 2018, 00:38