मूल प्रश्न: डॉकरफाइल में वोल्यूम निर्देश का उपयोग कैसे करें?
वास्तविक प्रश्न जो मैं हल करना चाहता हूं - वह है कि निर्माण के दौरान डॉकएफ़िले में डॉक कंटेनर में होस्ट वॉल्यूम कैसे माउंट करें, अर्थात, जिसके docker run -v /export:/export
दौरान क्षमता हो docker build
।
इसके पीछे का कारण, मेरे लिए, डॉकटर में चीजों का निर्माण करते समय, मैं नहीं चाहता कि वे ( apt-get install
) एक ही डॉक में बंद किए गए कैश हों, लेकिन उन्हें साझा / पुन: उपयोग करने के लिए। यही मुख्य कारण है कि मैं इस सवाल के बारे में पूछ रहा हूं।
नवीनतम अद्यतन:
Docker v18.09 से पहले, सही उत्तर वही होना चाहिए जो इसके साथ शुरू होता है:
बिल्ड के दौरान वॉल्यूम माउंट करने का एक तरीका है, लेकिन इसमें डॉकरफाइल्स शामिल नहीं है।
हालाँकि, यह एक खराब कहा गया, संगठित और समर्थित जवाब था। जब मैं अपने कर्ता को पुनः स्थापित कर रहा था, तो मैं निम्नलिखित लेख पर ठोकर खाने के लिए हुआ:
Apt-cacher-ng सेवा https://docs.docker.com/engine/examples/apt-cacher-ng/ पर Dockerize
करें
यह सीधे तौर पर नहीं बल्कि अप्रत्यक्ष रूप से इस प्रश्न का हल है। यह रूढ़िवादी तरीका है जो हमें करने का सुझाव देता है। और मैं मानता हूं कि मैं यहां जो पूछना चाह रहा था, उससे बेहतर है।
दूसरा तरीका है, नव स्वीकृत जवाब , जैसे, v18.09 में बिल्डकिट।
जो भी आप पर सूट करे।
था: वहाँ एक समाधान था - रॉकर, जो डोकर से नहीं था, लेकिन अब उस घुमाव को बंद कर दिया गया है, मैं फिर से जवाब " वापस संभव नहीं" पर वापस करता हूं ।
पुराना अपडेट: तो जवाब "संभव नहीं है"। मैं इसे एक उत्तर के रूप में स्वीकार कर सकता हूं क्योंकि मुझे पता है कि इस मुद्दे पर https://github.com/docker/docker/issues/3156 पर बड़े पैमाने पर चर्चा की गई है । मैं समझ सकता हूं कि पोर्टेकर डेवलपर के लिए एक सर्वोपरि मुद्दा है; लेकिन एक डॉक उपयोगकर्ता के रूप में, मुझे कहना है कि मैं इस लापता सुविधा के बारे में बहुत निराश हूं। उपर्युक्त चर्चा से एक उद्धरण के साथ मुझे अपना तर्क बंद करने दें: " मैं बेस इमेज के रूप में जेंटू का उपयोग करना चाहूंगा, लेकिन निश्चित रूप से नहीं चाहता कि पोर्टेज ट्री डेटा का 1GB किसी भी लेयर्स में हो जब एक बार इमेज बन गई हो। आप। अगर यह विशाल चित्र पेड़ के लिए छवि के रूप में स्थापित करने के लिए नहीं था, तो कुछ अच्छे कॉम्पैक्ट कंटेनर हो सकते हैं।"हाँ, मैं जो कुछ भी ज़रूरत है उसे डाउनलोड करने के लिए wget या curl का उपयोग कर सकता हूं, लेकिन यह तथ्य कि केवल एक पोर्टेबिलिटी पर विचार अब मुझे डाउनलोड करने के लिए मजबूर कर रहा है> पोर्टेज ट्री का 1GB हर बार जब मैं एक Gentoo आधार छवि बनाता हूं तो यह न तो कुशल है और न ही उपयोगकर्ता के अनुकूल है।" अधिक, पैकेज रिपॉजिटरी हमेशा के लिए / usr / पोर्टेज के तहत होगा, इस प्रकार Gentoo के लिए हमेशा योग्य। फिर, मैं निर्णय का सम्मान करता हूं, लेकिन कृपया मुझे अपनी निराशा व्यक्त करने के साथ-साथ इस समय में भी अनुमति दें।
विवरण में मूल प्रश्न :
से
संस्करणों को वॉल्यूम के माध्यम से साझा करें
http://docker.readthedocs.org/en/v0.7.3/use/working_with_olumes/
यह कहता है कि डेटा वॉल्यूम सुविधा "डॉकर रिमोट एपीआई के संस्करण 1 के बाद से उपलब्ध है।" मेरा डॉक वर्जन १.२.० है, लेकिन मुझे उपरोक्त लेख में दिया गया उदाहरण काम नहीं आया:
# BUILD-USING: docker build -t data .
# RUN-USING: docker run -name DATA data
FROM busybox
VOLUME ["/var/volume1", "/var/volume2"]
CMD ["/usr/bin/true"]
डॉकर कमांड में होस्ट-माउंटेड वॉल्यूम को डॉक कंटेनर में माउंट करने का उचित तरीका क्या है?
$ apt-cache policy lxc-docker
lxc-docker:
Installed: 1.2.0
Candidate: 1.2.0
Version table:
*** 1.2.0 0
500 https://get.docker.io/ubuntu/ docker/main amd64 Packages
100 /var/lib/dpkg/status
$ cat Dockerfile
FROM debian:sid
VOLUME ["/export"]
RUN ls -l /export
CMD ls -l /export
$ docker build -t data .
Sending build context to Docker daemon 2.56 kB
Sending build context to Docker daemon
Step 0 : FROM debian:sid
---> 77e97a48ce6a
Step 1 : VOLUME ["/export"]
---> Using cache
---> 59b69b65a074
Step 2 : RUN ls -l /export
---> Running in df43c78d74be
total 0
---> 9d29a6eb263f
Removing intermediate container df43c78d74be
Step 3 : CMD ls -l /export
---> Running in 8e4916d3e390
---> d6e7e1c52551
Removing intermediate container 8e4916d3e390
Successfully built d6e7e1c52551
$ docker run data
total 0
$ ls -l /export | wc
20 162 1131
$ docker -v
Docker version 1.2.0, build fa7b24f
VOLUME ~/host_dir ~/container_dir
। चर्चा काफी व्यापक है, क्या इसका कारण बताने के लिए संक्षिप्त तरीका है?