LXC: मैं होस्ट से कंटेनर में फ़ोल्डर कैसे माउंट करूं?


24

मैं होस्ट पर एक एलएक्ससी कंटेनर में एक फ़ोल्डर माउंट करने की कोशिश कर रहा हूं।

होस्ट में एक फ़ोल्डर /mnt/ssd/solr_dataबनाया गया है (यह वर्तमान में रूट फाइल सिस्टम पर है, लेकिन बाद में मैं वहां एक एसएसडी ड्राइव माउंट करूंगा, इसलिए मैं इसके लिए तैयारी कर रहा हूं)।

मैं उस फ़ोल्डर को /dataकंटेनर में माउंट करना चाहता हूं ।

इसलिए कंटेनर fstab फ़ाइल में मेरे पास निम्नलिखित हैं:

/mnt/ssd/solr_data      /var/lib/lxc/Solr4StandAlone/rootfs/data        ext4    defaults,noatime        0       0

लेकिन यह एक नहीं है, मैं कंटेनर को शुरू करने में यह त्रुटि प्राप्त करता हूं:

lxc-start: No such file or directory - failed to mount '/mnt/ssd/solr_data' on '/usr/lib/x86_64-linux-gnu/lxc//data'
lxc-start: failed to setup the mounts for 'Solr4StandAlone'
lxc-start: failed to setup the container
lxc-start: invalid sequence number 1. expected 2
lxc-start: failed to spawn 'Solr4StandAlone'

जवाबों:


16

निर्देशिका को स्वचालित रूप से कंटेनर में बनाने के लिए, आप create=dirfstab में विकल्प भी जोड़ सकते हैं :

/mnt/ssd/solr_data      /var/lib/lxc/Solr4StandAlone/rootfs/data        none   bind,create=dir

संपादित करें: यह LXC के लिए विशिष्ट है। इस धागे को देखें

जैसे हमारे पास पहले से ही "वैकल्पिक" था, यह दो नए एलएक्ससी-विशिष्ट माउंट फ्लैग जोड़ता है:

  • create = dir (पथ पर mkdir_p करेगा)

  • create = file (dirname पर एक mkdir_p करेगा (पथ पर एक फ़ॉपन)

यह अनपेक्षित कंटेनरों के लिए कुछ आवश्यक बाइंड-माउंट से प्रेरित था।


1
यह किस संस्करण पर mountलागू होता है? mount(8)उदाहरण के लिए, मुझे Ubuntu 14.04 पर वर्णित विकल्प नहीं मिला ।
0xC0000022L

इसके अलावा नवीनतमmount(8)
0xC0000022L

2
वास्तव में ... ऐसा लगता है कि यह केवल lxc के साथ काम करता है। देखें पर LXC-devel एमएल इस सूत्र
थोड़ा-दोस्त

14

में /var/lib/lxc/Solr4StandAlone/configएक पंक्ति पढ़ने जोड़ें:

lxc.mount.entry = /mnt/ssd/solr_data  /var/lib/lxc/Solr4StandAlone/rootfs/data none bind 0 0

फिर lxc-stopअपने कंटेनर और lxc-startअपने कंटेनर को फिर से बंद करें ।

बस इतना ही चाहिए।

रेफरी: संदर्भ लिंक


2
आपके समाधान को बेहतर समीक्षा मिलनी चाहिए क्योंकि यह अनपेक्षित एलएक्ससी कंटेनर टूल के साथ काम करता है। इस मामले में अन्य काम नहीं करेंगे। और शायद selinux / apport को उनकी विधि की अनुमति देने के लिए ट्वीक करने की आवश्यकता होगी। आपके समाधान के लिए +1!
Huygens

11

/dataमाउंट को ठीक से काम करने से पहले मुझे स्थानीय कंटेनर में फ़ोल्डर बनाना होगा।

मैंने भी इस fstab प्रविष्टि का उपयोग किया:

/mnt/ssd/solr_data      /var/lib/lxc/Solr4StandAlone/rootfs/data        none   bind     0       0

bindमाउंट विकल्प कुछ ऐसा है जो ओपी में गायब था। मेरा मानना ​​है कि यह सबसे महत्वपूर्ण सुधार है (वर्तमान में अन्य सभी जवाबों में भी)।
imz - इवान ज़खरीशेव

9

2015/09/30 के अनुसार एक सुरक्षा पैच से उत्पन्न एक परिवर्तन विन्यास फाइल में lxc.mount.entry के साथ एक पूर्ण पथ पर बढ़ते हैं।

इसके बजाय आप एक रिश्तेदार पथ का उपयोग कर सकते हैं

 lxc.mount.entry = /mnt/ssd/solr_data data none bind 0 0

देखें: https://wiki.debian.org/LXC#Bind_mounts_inside_the_container


महान इसके अलावा, यह एक जवाब के रूप में काम करता है, यह उत्थान होगा ताकि लोग इसे जल्द ही देखें। इसे जोड़ने के लिए धन्यवाद!
डेविड पार्क

6

जैसा कि एलएक्ससी समय के साथ बदल गया है यह बहुत सरल हो सकता है, लेकिन इसने मुझे थोड़ा स्टम्प किया, इसलिए योगदान करना चाहता था। मैंने इसके लिए एक जिस्ट भी बनाया ताकि मैं खुद को याद रख सकूं, लेकिन केवल lxc config डिवाइस का उपयोग करने से यह ट्रिक चलेगी।

sudo lxc config device add Solr4StandAlone sdb disk source=/var/lib/lxc/Solr4StandAlone/rootfs/data path=mnt/ssd/solr_data

नोट @biscuitNinja द्वारा उल्लिखित परिवर्तन के कारण पथ तर्क को छोड़ देना महत्वपूर्ण है

कंटेनर से होस्ट करने के लिए निर्देशिकाओं को माउंट करना


1

यदि आप libvirtअपना lxcकंटेनर बनाने के लिए उपयोग कर रहे हैं , तो आप passthroughयहां दिखाए गए अनुसार होस्ट पर निर्देशिका बना सकते हैं:

root@localhost:/# cat /etc/libvirt/lxc/my_container.xml
...
 <filesystem type='mount' accessmode='passthrough'>
    <source dir='<dir on host>'/>
    <target dir='<dir on container>'/>
 </filesystem>
....
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.