2015-04-29 9 views
6

मैं डॉकर होस्ट से कंटेनर तक फ़ाइलों का एक सेट कॉपी करने की कोशिश कर रहा हूं। एक AUFS सिस्टम पर सीधे/var/lib/docker/aufs/... में काम करता है। हालांकि मैं फेडोरा के साथ एक और प्रणाली हूं जिसमें स्टोरेज ड्राइवर के रूप में devicemapper है। इस प्रणाली पर अगर मैं इस कार्य करें:डॉकर मेजबान से कंटेनर में फ़ाइल कॉपी करना

[[email protected] tmp]# docker inspect -f '{{.Id}}' 393ef4b9f485 
393ef4b9f485dafc78037f59bdbeda16d63b8338487248ed25b68cf544f29e24 
[[email protected] tmp]# cd /var/lib/docker/devicemapper/mnt/393ef4b9f485dafc78037f59bdbeda16d63b8338487248ed25b68cf544f29e24 
[[email protected] 393ef4b9f485dafc78037f59bdbeda16d63b8338487248ed25b68cf544f29e24]# ls -l 
total 0 
[[email protected] 393ef4b9f485dafc78037f59bdbeda16d63b8338487248ed25b68cf544f29e24]# 

मैं कुछ भी नहीं मिलता है। मैंने Copying files from host to Docker container

से सभी सुझावों का प्रयास किया है, सीधे अंतर्निहित एफएस पर जाने के बजाय, टैर का उपयोग करना बहुत अच्छा लगता है। लेकिन मैं यह नहीं मान सकता कि टैर सभी कंटेनर में मौजूद होगा।

यदि यह प्रासंगिक है, तो मैंने कंटेनर में फ़ाइल बनाने का भी प्रयास किया है, लेकिन फिर यह एक खोज किया। नाम/var/lib/docker/devicemapper/mnt में कोई फायदा नहीं हुआ।

कोई संकेत?

संपादित करें 1: इन बाधाओं को जोड़कर, उत्तरों में से एक के आधार पर। इरादा बिना फ़ाइलों के एक कंटेनर में कॉपी करना है। कंटेनर बिल्ड (डॉकरफाइल) को संशोधित नहीं करें, बी। किसी भी एसएसएच या एफटीपी डिमन्स स्थापित करने के लिए। और सी। कंटेनर शुरू करने के तरीके को भी नहीं बदला।

संपादित करें 2: डोकर जानकारी जोड़ना:

# docker info 
Containers: 1 
Images: 21 
Storage Driver: devicemapper 
Pool Name: docker-253:0-397467-pool 
Pool Blocksize: 65.54 kB 
Backing Filesystem: extfs 
Data file: 
Metadata file: 
Data Space Used: 4.261 GB 
Data Space Total: 107.4 GB 
Data Space Available: 103.1 GB 
Metadata Space Used: 3.596 MB 
Metadata Space Total: 2.147 GB 
Metadata Space Available: 2.144 GB 
Udev Sync Supported: true 
Library Version: 1.02.90 (2014-09-01) 
Execution Driver: native-0.2 
Kernel Version: 3.17.4-301.fc21.x86_64 
Operating System: Fedora 21 (Twenty One) 
CPUs: 4 
Total Memory: 3.86 GiB 
Name: fedora-docker 

डोकर संस्करण 1.6.0 है और कंटेनर छवि RHEL पर आधारित है।

+1

आपको ऐसा करने की आवश्यकता क्यों है? कोई आधिकारिक समर्थित समाधान नहीं है, इसलिए कोई जवाब हमेशा एक हैक बनने जा रहा है - लेकिन अगर आप हमें बताते हैं कि आपको इसकी आवश्यकता क्यों है, तो शायद हम कुछ के साथ आ सकते हैं। –

+0

सहमत हैं कि इसके लिए कोई आधिकारिक समर्थन नहीं है, वास्तव में डॉकर 1.7 को यह परिवर्तन प्राप्त होना चाहिए, https://github.com/docker/docker/pull/10198, हालांकि मेरे उपयोग के मामले में मुझे कुछ चेक करने की आवश्यकता है पहले से ही कंटेनर चल रहा है और इसके लिए मुझे कुछ स्क्रिप्ट और फ़ाइलों में धक्का देना होगा और उनका आउटपुट प्राप्त करना होगा। कंटेनर को "परेशान"/पुनर्निर्माण के बिना। –

+0

यदि आप मान सकते हैं कि स्क्रिप्ट चलती है, तो मुझे लगता है कि आप शायद अनुमान लगा सकते हैं कि कम से कम बिल्ली मौजूद है, और शायद टैर। यदि आप अपनी स्क्रिप्ट को इस स्क्रिप्ट को नहीं जोड़ सकते हैं, तो आप इसे रन-टाइम पर वॉल्यूम के रूप में माउंट कर सकते हैं। –

उत्तर

9

अद्यतन उल्लेख कर सकते हैं: अब डोकर cp कमांड लाइन आदेश दोनों तरीकों से काम करता है। देखें docker cp प्रलेखन

प्रयोग

डोकर सीपी [विकल्प] कंटेनर: SRC_PATH DEST_PATH | -

डोकर सीपी [विकल्प] SRC_PATH | - कंटेनर: DEST_PATH

== ===== मूल उत्तर ==============

एसीआर काम करने का सबसे आसान तरीका मिला ओएसएस भंडारण ड्राइवरों:

cd /proc/`docker inspect --format "{{.State.Pid}}" <containerid>`/root 

इस फेडोरा पर Devicemapper के साथ भंडारण चालक रूप AUFS के साथ भंडारण चालक के रूप में परीक्षण किया है और Ubuntu पर है। दोनों मामलों में मेरे लिए काम करता है।

+0

उबंटू 14.04 और डॉकर 1.6.2 पर एक आकर्षण की तरह काम किया (और मैं गूढ़ रूप से जोड़ दूंगा: * बस * समय में)। – hauron

0

यह उत्तर आपको कॉपी करने का एक अलग दृश्य प्रदान करता है।

1> इस तरीके का उपयोग करें बशर्ते आप कंटेनर का आईपी जानते हों। यदि आपका लक्ष्य सिर्फ फाइल सिस्टम को होस्ट करने के लिए है और इसे कंटेनर में डाल दें तो आप इसे विभिन्न तरीकों से उपयोग कर सकते हैं। फ़ाइल स्थानांतरण प्रोटोकॉल एक आसान तरीका है। आप अपने डॉकर कंटेनर पर एक एसएसएच सर्वर (एसएसडीडी) सेट कर सकते हैं और इसे करने के लिए scp या किसी अन्य फ़ाइल ट्रांसफर टूल का उपयोग कर सकते हैं।

2> इस आदेश का उपयोग कर वॉल्यूम्स के माध्यम से फ़ाइलों को साझा करना docker run -ti -v /host-path-of-directory-having-files/:/target-path-in-container/:rw image-name bash। आप इस लिंक https://docs.docker.com/userguide/dockervolumes/

+0

कृपया प्रश्न के संपादन देखें, मैं कंटेनर शुरू करने के तरीके को बदल नहीं सकता, या कंटेनर में नया सॉफ़्टवेयर इंस्टॉल नहीं कर सकता। –

+0

डॉकर में उपयोग कर रहे कौन सा छवि आरयू ?? कौन सा डॉकर बेस छवि ओएस, मेजबान ओएस आरयू का उपयोग कर ?? –

+0

डॉकर छवि आरएचईएल, होस्ट ओएस फेडोरा रिलीज 21, डॉकर संस्करण 1.6.0 पर आधारित है, और डॉकर जानकारी बताती है कि स्टोरेज ड्राइवर devicemapper है। पूरी डॉकर जानकारी को प्रश्न में संपादित करें देखें। –

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