एक डॉक कंटेनर पर कई वॉल्यूम बढ़ते हैं?


152

मुझे पता है कि मैं अपने कंटेनर में अपने होस्ट पर निर्देशिका का उपयोग करके कुछ ऐसा कर सकता हूं

docker run -t -i -v '/on/my/host:/on/the/container' ubuntu /bin/bash

क्या एक से अधिक होस्ट-कंटेनर जोड़ी बनाने का एक तरीका है? जैसे अल्पविराम से अलग की गई सूची, या किसी सरणी में पास?


जैसा कि मैं डॉक्स शर्तों की वर्तमान स्थिति को समझता हूं, आप एक वॉल्यूम (प्रश्न का शीर्षक) माउंट नहीं कर सकते हैं, तो आप निश्चित रूप से फ़ोल्डर्स की मेजबानी करने के लिए कई बाइंड माउंट कर सकते हैं (जो कि सवाल के शरीर के लिए पूछा गया है)
एलेक्सी मार्टीनोव

जवाबों:


260

कई -vतर्क पारित करें ।

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

docker -v /on/my/host/1:/on/the/container/1 \
       -v /on/my/host/2:/on/the/container/2 \
       ...

2
ठीक है, तो मैं इसे ठीक उसी तरह कर रहा हूं, लेकिन जब मैं दूसरे को कॉल करने की कोशिश करता हूं तो यह कहता है कि यह नहीं मिला है।
मोमल

docker run -v / home / usr / workspace / proj / WebContent / file / username: / mycode -v / home / usr / कार्यक्षेत्र / proj / WebContent / फ़ाइल: / tst gcc: 4.9 sh -c 'cd mycode; gcc -o myapp ./mycode.c; सीडी tst; ./myapp </test.txt 'यह मेरी आज्ञा है, मैं पहले खंड में मौजूद mycode.c को संकलित करने की कोशिश कर रहा हूं, लेकिन उसी फ़ाइल को एक अलग वॉल्यूम से एक स्टड दें। मैं यह कैसे करुं?
मोमल

1
@ YehCheez, मैं (दृढ़ता से) इसे एक अलग प्रश्न के रूप में खोलने का सुझाव देता हूं, और एक प्रतिलिपि बनाने वाला बनाने की कोशिश कर रहा हूं। (यदि आप सार्वजनिक रजिस्ट्री में डॉकर छवि के साथ बग को हटा सकते हैं, और प्रश्न में दी गई स्क्रिप्ट में सभी स्थानीय निर्भरताएं बना सकते हैं, तो यह आदर्श होगा)।
चार्ल्स डफी

क्या इसे हमेशा निरपेक्ष रास्तों की जरूरत है?
xatzistnr

3
गंतव्य हमेशा निरपेक्ष होना चाहिए। स्रोत को एक निरपेक्ष पथ या नामांकित वॉल्यूम के लिए पहचानकर्ता होने की आवश्यकता है - बाद में डॉक्स के लिए docs.docker.com/engine/admin/volumes/volumes देखें ।
चार्ल्स डफी

19

डॉकर अब उपयोग करने की ओर पलायन करने की सलाह देता है --mount

वर्तमान डॉक्यूमेंट डॉक्यूमेंट में कई वॉल्यूम माउंट को भी विस्तार से बताया गया है।

प्रेषक: https://docs.docker.com/storage/bind-mounts/

$ docker run -d \
  -it \
  --name devtest \
  --mount type=bind,source="$(pwd)"/target,target=/app \
  --mount type=bind,source="$(pwd)"/target,target=/app2,readonly,bind-propagation=rslave \
  nginx:latest

मूल पुराने उत्तर को अभी भी काम करना चाहिए; बस उत्तर को सर्वोत्तम ज्ञात विधि से संरेखित करने का प्रयास कर रहा है।


यह एकमात्र कारण जोड़ने के लायक है डॉकटर ने पलायन की सिफारिश की है क्योंकि उनके शोध से पता चलता है - उपयोग करने के लिए आसान है और इसमें अधिक विकल्प हैं। -V या --mount का उपयोग करना पूरी तरह से ठीक है, यह आपकी व्यक्तिगत पसंद और जरूरतों के लिए है।
किलरकोड

18

आप कंटेनर में एकाधिक निर्देशिका को माउंट करने के लिए कमांड -vमें कई बार विकल्प का उपयोग कर सकते हैं docker run:

docker run -t -i \
  -v '/on/my/host/test1:/on/the/container/test1' \
  -v '/on/my/host/test2:/on/the/container/test2' \
  ubuntu /bin/bash



-9

या आप कर सकते हैं

docker run -v /var/volume1 -v /var/volume2 DATA busybox true

4
ओपी के बाद ऐसा नहीं है। यह कंटेनर के भीतर एक वॉल्यूम बनाता है और इसे मेजबान पर नहीं बांधता है।
आयोनिस

8
आप सही हैं, होना चाहिए: docker run -v / var / volume1: / container / volume1 -v / var / volume2: / container / volume2 DATA busybox true
Joost van der Laan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.