2017-12-07 33 views
8

मैं डोकर छवियों का निर्माण करने के लिए एक बांस निर्माण योजना को विन्यस्त कर रहा हूँ से पिछले निर्माण कैश का उपयोग कर। रजिस्ट्री के रूप में एडब्ल्यूएस ईसीएस का उपयोग करना। योजना बनाएं इस तरह कुछ है;डोकर निर्माण रजिस्ट्री

  • docker build -t myimage:latest . 
    
  • टैग छवि (ईसीएस के लिए आवश्यक)

    docker tag -f myimage:latest xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 
    
  • नवीनतम टैग के साथ नवीनतम टैग

    docker pull xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 
    
  • निर्माण छवि खींच निर्माण कार्यों अलग और नए सिरे से निर्माण इंजन/सर्वर हर बार पर चलने क्योंकि छवि रजिस्ट्री में

    docker push xx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 
    

पुश, यह स्थानीय कैश नहीं है।

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

मैंने कुछ गलत पता या वहाँ दृष्टिकोण पर कोई राय नहीं है?

+0

क्या आप "हर बार छवि बनाने की कोशिश करता है" के कुछ आउटपुट साझा कर सकते हैं? आप अभी भी प्रत्येक परत को "निर्मित" प्राप्त करेंगे, लेकिन यह कहेंगे कि यह कैश का उपयोग कर रहा है। – danehammer

+1

08-दिसंबर-2017 08:38:16 \t चरण 8: रन ऐड-एपीटी-रिपोजिटरी पीपीए: अधिकतममाइंड/पीपीए -0 08-दिसंबर-2017 08:38:17 \t ---> 5806bde2c3d3 08- Dec-2017 08:38:17 \t gpg: keyring '/tmp/tmp5o6q7_ge/secring.gpg 'बनाया 08-दिसंबर-2017 08:38:17 \t gpg: keyring' /tmp/tmp5o6q7_ge/pubring.gpg' बनाया 08-Dec-2017 08:38:17 \t gpg: hkp सर्वर keyerver.ubuntu.com से कुंजी DE742AFA का अनुरोध 08-Dec-2017 08:38:17 \t gpg: /tmp/tmp5o6q7_ge/trustdb.gpg: ट्रस्टडब ने बनाया 08-दिसंबर-2017 08:38:17 \t जीपीजी: कुंजी DE742AFA: सार्वजनिक कुंजी "मैक्समिंड के लिए लॉन्चपैड पीपीए" आयातित 08-दिसंबर –

+0

बस एक उदाहरण। जैसा कि मैंने कहा था कि यह पिछले परतों का उपयोग नहीं करता है। –

उत्तर

3

आप squid proxy का उपयोग कर विचार कर रहे हैं?

संपादित करें: मामले में आप ऊपर आधिकारिक वेबसाइट पर जाने के लिए चाहते हैं, यहाँ विद्रूप प्रॉक्सी पर त्वरित सेटअप (Debian आधारित)

apt-get install squid-deb-proxy 

है और उसके बाद खुला द्वारा एक बड़ा स्थान बनाने के लिए विद्रूप विन्यास बदल ऊपर

/etc/squid/squid.conf 

और cache_dir ufs /var/spool/ squid 10000 16 256 और वहाँ तुम जाओ के साथ #cache_dir ufs /var/spool/squid की जगह ,, एक 10.000 एमबी कैश अंतरिक्ष के लायक

और फिर dockerfile में प्रॉक्सी पता ,, यहाँ बात विद्रूप प्रॉक्सी के साथ dockerfile का एक उदाहरण है

यम और apt-get आधारित distro:

उपयुक्त-मिल आधारित distro

`FROM debian 
RUN apt-get update -y && apt-get install net-tools 
RUN echo "Acquire::http::Proxy \"http://$(\ 
route -n | awk '/^0.0.0.0/ {print $2}' \ 
):8000\";" \ > /etc/apt/apt.conf.d/30proxy 
RUN echo "Acquire::http::Proxy::ppa.launchpad.net DIRECT;" >> \ 
/etc/apt/apt.conf.d/30proxy 
CMD ["/bin/bash"]` 

यम आधारित distro

`FROM centos:centos7 
RUN yum update -y && yum install -y net-tools 
RUN echo "proxy=http://$(route -n | \ 
awk '/^0.0.0.0/ {print $2}'):3128" >> /etc/yum.conf 
RUN sed -i 's/^mirrorlist/#mirrorlist/' \ 
/etc/yum.repos.d/CentOS-Base.repo 
RUN sed -i 's/^#baseurl/baseurl/' \ 
/etc/yum.repos.d/CentOS-Base.repo 
RUN rm -f /etc/yum/pluginconf.d/fastestmirror.conf 
RUN yum update -y 
CMD ["/bin/bash"]` 

कहता है कि आप अपने aws रजिस्ट्री में स्क्विड प्रॉक्सी स्थापित करते हैं, केवल पहला निर्माण इंटरनेट से डेटा लाएगा बाकी (अन्य सर्वर) बिल्ड स्क्विड प्रॉक्सी कैश से होना चाहिए। ।

इस तकनीक पुस्तक पर आधारित व्यवहार में डोकर तकनीक 57 टुकड़ी के साथ एक पैकेज कैश की स्थापना की तेजी

मुझे नहीं लगता है कि किसी भी तीसरे पक्ष के सॉफ़्टवेयर के बिना डोकर में एक कैश सुविधा नहीं है निर्माण के लिए। शायद वहाँ है और मैं बस इसे नहीं जानता। सुनिश्चित नहीं है, अगर मैं गलत हूं तो बस मुझे सही करें। ।

+0

प्रश्न एपीटी पैकेजों को कैशिंग करने के बारे में नहीं है लेकिन छवि परतें हैं। –

+0

अच्छी तरह से। यह सिर्फ मेरा छोटा उदाहरण है, आप भी छवि परतों पर स्क्विड कैश का उपयोग कर सकते हैं। । यहां कुछ उदाहरण दिया गया है [डॉकर कैशिंग प्रॉक्सी] (http://planet.jboss.org/post/deploy_and_configure_a_local_docker_caching_proxy) –

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