अल्पाइन Dockerfile के लाभ आरएम / var / कैश / एपीके / *


87

अल्पाइन छवि का उपयोग करके डॉकफाइल्स बनाते समय, मैंने अक्सर इसका उपयोग किया है apk --no-cacheऔर अन्य बार यह प्रतिबद्ध है और इसके बजाय मैं देख रहा हूं rm /var/cache/apk/*

मैं यह जानने के लिए उत्सुक हूं कि --no-cacheबाद में ए करने की आवश्यकता समाप्त हो जाती है rm /var/cache/apk/*। मैं यह भी जानना चाहूंगा कि क्या एक शैली दूसरे पर पसंद की जाती है।


3
मेरी समझ यह है कि, क्या--no-cache आपको बाद में ऐसा करने की आवश्यकता नहीं हैrm /var/cache/apk/*
जेवियर बुज़ी

जवाबों:


122

--no-cacheविकल्प सूचकांक स्थानीय स्तर पर है, जो कंटेनर छोटे रखने के लिए उपयोगी है कैश नहीं करने के लिए अनुमति देता है।

वस्तुतः यह apk updateशुरुआत और rm -rf /var/cache/apk/*अंत में बराबर होता है ।

कुछ उदाहरण जहां हम --no-cacheविकल्प का उपयोग करते हैं :

$ docker run -ti alpine:3.7
/ # apk add nginx
WARNING: Ignoring APKINDEX.70c88391.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.5022a8a2.tar.gz: No such file or directory
ERROR: unsatisfiable constraints:
  nginx (missing):
    required by: world[nginx]
/ # 
/ # apk add --no-cache nginx
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
(1/2) Installing pcre (8.41-r1)
(2/2) Installing nginx (1.12.2-r3)
Executing nginx-1.12.2-r3.pre-install
Executing busybox-1.27.2-r7.trigger
OK: 6 MiB in 13 packages
/ # 
/ # ls -la /var/cache/apk/
total 8
drwxr-xr-x    2 root     root          4096 Jan  9 19:37 .
drwxr-xr-x    5 root     root          4096 Mar  5 20:29 ..

एक अन्य उदाहरण जहां हम --no-cacheविकल्प का उपयोग नहीं करते हैं :

$ docker run -ti alpine:3.7
/ # apk add nginx
WARNING: Ignoring APKINDEX.70c88391.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.5022a8a2.tar.gz: No such file or directory
ERROR: unsatisfiable constraints:
  nginx (missing):
    required by: world[nginx]
/ # 
/ # apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
v3.7.0-107-g15dd6b8ab3 [http://dl-cdn.alpinelinux.org/alpine/v3.7/main]
v3.7.0-105-g4b8b158c40 [http://dl-cdn.alpinelinux.org/alpine/v3.7/community]
OK: 9048 distinct packages available
/ # 
/ # apk add nginx
(1/2) Installing pcre (8.41-r1)
(2/2) Installing nginx (1.12.2-r3)
Executing nginx-1.12.2-r3.pre-install
Executing busybox-1.27.2-r7.trigger
OK: 6 MiB in 13 packages
/ # 
/ # ls -la /var/cache/apk/
total 1204
drwxr-xr-x    2 root     root          4096 Mar  5 20:31 .
drwxr-xr-x    6 root     root          4096 Mar  5 20:31 ..
-rw-r--r--    1 root     root        451508 Mar  3 00:30 APKINDEX.5022a8a2.tar.gz
-rw-r--r--    1 root     root        768680 Mar  5 09:39 APKINDEX.70c88391.tar.gz
/ # 
/ # rm -vrf /var/cache/apk/*
removed '/var/cache/apk/APKINDEX.5022a8a2.tar.gz'
removed '/var/cache/apk/APKINDEX.70c88391.tar.gz'

जैसा कि आप देख सकते हैं कि दोनों मामले वैध हैं। मेरे लिए, --no-cacheविकल्प का उपयोग करना अधिक सुरुचिपूर्ण है।


5
मैं मानता हूं कि --no-cacheअधिक सुरुचिपूर्ण है। लेकिन कई apk add --no-cacheकमांड के साथ , इंडेक्स फाइल्स हर बार डाउनलोड हो जाती हैं। इस मामले में यह apk updateशीर्ष पर करने के लिए कम नेटवर्क चैटर है , फिर rm -rf /var/cache/apk/*नीचे के पास। यह वास्तव में मायने रखता है जब कुछ पैकेजों के साथ जोड़ा जाता है --virtualऔर कुछ नहीं होते हैं।
१२:५० पर

2

मुझे लगता है कि यह एक डिजाइन शैली है। कैश का सार फिर से उपयोग करना है, उदाहरण के लिए, कई कंटेनर नेटवर्क से बार-बार डाउनलोड किए बिना एक ही कैश्ड फ़ाइल सिस्टम को माउंट कर सकते हैं।

एप्‍लि‍क विकी देख सकते हैं: https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management#Local_Cache


1
एपीके मैनिफ़ेस्ट इतने कुशल हैं, मैं तर्क दूंगा कि कैश साझा करने का प्रयास इसके लायक नहीं है, खासकर क्योंकि आपको हर बार कैश को अपडेट करना होगा, वैसे भी सबसे हाल के संस्करण प्राप्त करने के लिए। मई के रूप में अच्छी तरह से नहीं कर सभी docker में
डैनियल Farrell

यदि आप डॉकटर का उपयोग कर रहे हैं, तो हर एपीके ऐड में नो-कैश ऑप्शन का उपयोग करने के लिए बेहतर है और अंत में बेहतर नहीं है, यदि आपके पास सभी स्थापित करने के लिए एकल है तो आपको
डॉक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.