2016-11-01 19 views
5

एक प्रोजेक्ट के लिए मुझे ubuntu चलाने वाले डॉकर कंटेनर के अंदर एक लिनक्स छवि को माउंट करने की आवश्यकता है। जिस छवि को मैं माउंट करना चाहता हूं वह रास्पियन है। मुझे छवि के लिनक्स फाइल सिस्टम तक पहुंचने और फ़ाइल जोड़ने की आवश्यकता है।डॉकर कंटेनर में माउंट लिनक्स छवि

मैं मात्रा ध्वज के साथ फ़ोल्डर बढ़ते द्वारा छवि को एक्सेस:

Disk raspbian.img: 1.3 GiB, 1389363200 bytes, 2713600 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes/512 bytes 
I/O size (minimum/optimal): 512 bytes/512 bytes 
Disklabel type: dos 
Disk identifier: 0x5a7089a1 

Device  Boot Start  End Sectors Size Id Type 
raspbian.img1  8192 137215 129024 63M c W95 FAT32 (LBA) 
raspbian.img2  137216 2713599 2576384 1.2G 83 Linux 

अब जब मैं mount -o loop,offset=$((137216*512)) raspbian.img /mnt/ के साथ छवि माउंट करने के लिए प्रयास करें:

docker run -it -v /path/to/image/folder:/default ubuntu /bin/bash

fdisk -l raspbian.img के साथ मैं ऑफसेट पाया मुझे mount: /mnt/: mount failed: Unknown error -1 मिलता है। क्या कोई समझा सकता है कि क्या मैं एक चलने वाले डॉकर कंटेनर में लिनक्स छवि को माउंट कर सकता हूं और यदि ऐसा है तो कैसे?

संपादित

ही कर माउंट आवारा में परिचालन पूरी तरह से काम करता है। क्या डॉकर बढ़ते फाइल सिस्टम के लिए कुछ सीमाएं हैं?

+0

Raspbian बेयर मेटल एआरएम हार्डवेयर के अंतर्गत चलाने के लिए है , एक वीएम के अंदर नहीं। इसके अलावा, इसे एआरएम की आवश्यकता है और आपने शायद किसी अन्य प्लेटफार्म के तहत डॉकर/उबंटू सेटअप किया है? – Alkaline

+0

मुझे पता है। लेकिन मैं छवि के फाइल सिस्टम को माउंट करना चाहता हूं। मैं रास्पियन बूट नहीं करना चाहता। – k4l4m

उत्तर

7

क्या डॉकर बढ़ते फाइल सिस्टम के लिए कुछ सीमाएं हैं?

हां। एक मानक डॉकर कंटेनर में कई सुरक्षा प्रतिबंध हैं। जैसा कि आपने पाया है, आप नई फाइल सिस्टम को माउंट नहीं कर सकते हैं। आप कंटेनर के नेटवर्क वातावरण को संशोधित करने में भी असमर्थ हैं।

एक समाधान मेजबान पर माउंट ऑपरेशन करने के लिए बस है, और फिर -v तर्क docker run पर घुड़सवार निर्देशिका को कंटेनर में बेनकाब करें। कुछ की तरह:

# losetup -fP --show raspbian.img 
/dev/loop0 
# mount /dev/loop0p2 /mnt 
# docker run -v /mnt:/raspbian ubuntu bash 

यदि आपको वास्तव में कंटेनर के अंदर माउंट प्रदर्शन करने के लिए चाहते हैं, आप एक विशेषाधिकार प्राप्त कंटेनर docker run को चला सकते हैं, --privileged विकल्प का उपयोग। इस को हटा प्रतिबंध सामान्य रूप से एक डोकर कंटेनर पर रखा के सबसे:

  • आप वह मेजबान के /dev को पूरा उपयोग करना होगा।
  • आप फाइल सिस्टम को माउंट करने में सक्षम होंगे।
  • आप कंटेनर के अंदर नेटवर्क कॉन्फ़िगरेशन को संशोधित करने में सक्षम होंगे।

उदाहरण के लिए:

# docker run -it --rm --privileged -v /images:/images ubuntu bash 

अब मैं छवि का निरीक्षण कर सकते हैं:

[email protected]:/# fdisk -l /images/2016-09-23-raspbian-jessie-lite.img 
Disk /images/2016-09-23-raspbian-jessie-lite.img: 1.3 GiB, 1389363200 bytes, 2713600 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes/512 bytes 
I/O size (minimum/optimal): 512 bytes/512 bytes 
Disklabel type: dos 
Disk identifier: 0x5a7089a1 

Device          Boot Start  End Sectors Size Id Type 
/images/2016-09-23-raspbian-jessie-lite.img1  8192 137215 129024 63M c W95 FAT 
/images/2016-09-23-raspbian-jessie-lite.img2  137216 2713599 2576384 1.2G 83 Linux 

और यह माउंट:

[email protected]:/# mount -o loop,offset=$((137216*512)) /images/2016-09-23-raspbian-jessie-lite.img /mnt 
[email protected]:/# ls /mnt 
bin dev home lib64  media opt root sbin sys usr 
boot etc lib lost+found mnt proc run srv tmp var 
[email protected]:/# 
+0

बहुत बढ़िया! आपका बहुत बहुत धन्यवाद। विशेषाधिकार प्राप्त मोड के बारे में भूल गए। – k4l4m

संबंधित मुद्दे