10 पॉइंट द्वारा GN⁺ 2024-01-09 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Docker इमेज एक्सप्लोर करने का टूल dive

  • Docker इमेज विश्लेषण: dive कमांड और इमेज टैग/ID/digest का उपयोग करके Docker इमेज का विश्लेषण किया जा सकता है।
  • Docker कमांड का सीधे उपयोग: alias सेट करके dive को सीधे Docker कमांड की तरह उपयोग किया जा सकता है।
  • Macbook पर बिल्ड: ऐसे Macbook पर जो केवल Docker कंटेनर इंजन को सपोर्ट करते हैं, dive का उपयोग करके इमेज बिल्ड और विश्लेषण किया जा सकता है।
  • CI पाइपलाइन इंटीग्रेशन: CI=true environment variable सेट करके UI के बिना इमेज विश्लेषण और space waste को न्यूनतम किया जा सकता है।

बुनियादी फीचर

  • लेयर-दर-लेयर Docker इमेज की सामग्री दिखाना: चुनी गई लेयर की सामग्री और पिछली लेयर के साथ जुड़ी सामग्री को दाईं ओर देखा जा सकता है।
  • हर लेयर में बदली गई सामग्री दिखाना: file tree में बदली गई, संशोधित, जोड़ी गई या हटाई गई फाइलें दिखाई जाती हैं।
  • "इमेज efficiency" का अनुमान: इमेज में शामिल व्यर्थ space की मात्रा का अनुमान लगाकर efficiency score और wasted file space दिखाता है।
  • तेज़ build/analysis cycle: dive build -t some-tag . कमांड से Docker इमेज बिल्ड करने के तुरंत बाद उसका विश्लेषण किया जा सकता है।
  • विभिन्न इमेज source और कंटेनर इंजन सपोर्ट: --source विकल्प से यह चुना जा सकता है कि कंटेनर इमेज कहाँ से लानी है।

इंस्टॉलेशन के तरीके

  • Ubuntu/Debian: curl और apt का उपयोग करके dive इंस्टॉल करें।
  • RHEL/Centos: curl और rpm का उपयोग करके dive इंस्टॉल करें।
  • Arch Linux: pacman के माध्यम से इंस्टॉल किया जा सकता है।
  • Mac: Homebrew या MacPorts का उपयोग करें, या release page से Darwin build डाउनलोड करें।
  • Windows: नवीनतम release डाउनलोड करें।
  • Go tools: Go वर्ज़न 1.10 या उससे ऊपर आवश्यक है, go get से इंस्टॉल करें।
  • Nix/NixOS: nix-env का उपयोग करके इंस्टॉल करें।
  • Docker: docker pull से इमेज लाएँ और Docker socket file शामिल करके चलाएँ।

CI इंटीग्रेशन

  • environment variable CI=true सेट करना: UI के बिना Docker इमेज का विश्लेषण किया जा सकता है और pass/fail स्थिति return code से दिखाई जाती है।
  • .dive-ci फाइल के जरिए नियम सेट करना: efficiency, wasted space की मात्रा और अनुपात के आधार पर pass/fail मानदंड सेट किए जा सकते हैं।

key binding

  • विभिन्न key binding के जरिए UI के भीतर लेयर और file tree view को नियंत्रित किया जा सकता है।

UI सेटिंग

  • config file के माध्यम से विभिन्न विकल्पों को customize करके dive के व्यवहार को बदला जा सकता है।

GN⁺ की राय

  • महत्व: dive Docker इमेज के आकार को optimize करने और waste कम करने के लिए बेहद उपयोगी टूल है। यह cloud infrastructure cost कम करने और resource management को अधिक efficient बनाने में मदद कर सकता है।
  • दिलचस्पी: Docker इमेज की हर लेयर का बारीकी से विश्लेषण करना और बदलावों को visual रूप में देख पाना, developers और system administrators दोनों के लिए बहुत दिलचस्प फीचर है।
  • उपयोगिता: dive को CI/CD पाइपलाइन में इंटीग्रेट करके automated image analysis के माध्यम से लगातार quality management और efficiency improvement हासिल किया जा सकता है।

1 टिप्पणियां

 
GN⁺ 2024-01-09
Hacker News की राय
  • Crane और go-containerregistry लाइब्रेरी

    • इमेज और लेयर manipulation में Crane बेहतरीन है, और यह go-containerregistry लाइब्रेरी पर आधारित है।
    • नई लेयर जोड़ना, मौजूदा इमेज के metadata (environment variables, labels, entrypoint आदि) को संशोधित करना संभव है।
    • कई लेयर्स को एक single layer में "flatten" करना, या इमेज को "rebase" करना (बदलावों को नए/updated base image पर फिर से लागू करना) संभव है।
    • सभी काम सीधे registry में होते हैं, इसलिए Docker की ज़रूरत नहीं होती (हालाँकि मूल इमेज बनाने में यह अब भी उपयोगी है)।
    • Crane उपयोग लिंक
  • Dive की उपयोगिता

    • Dive, Docker image कैसे काम करती है और efficient Dockerfile कैसे लिखें, यह समझने में बहुत उपयोगी है।
    • सिर्फ docs पढ़ने की तुलना में, Dockerfile बदलने के बाद उसके परिणामस्वरूप layer structure पर पड़ने वाला असर देखना समझने में बहुत मदद करता है।
    • Dive सीखने और यह भरोसा विकसित करने के लिए एक ज़रूरी टूल है कि आप वास्तव में क्या build/deploy कर रहे हैं।
    • layer differences की तुलना के लिए Dredge नाम का एक और टूल भी है।
    • Dredge उपयोग लिंक
  • Dive की छिपी हुई खासियत

    • Dive सिर्फ बहुत उपयोगी ही नहीं है, उसके लेखक भी शानदार developer हैं और उनके साथ काम करना बहुत सुखद है।
  • GoLang इस्तेमाल करने के कारण पर सवाल

    • यह जिज्ञासा कि ज़्यादातर container/infra tools GoLang में क्यों लिखे जाते हैं।
    • Docker, Podman, nerdctl, Terraform, Kubernetes आदि इसके उदाहरण हैं।
    • सवाल यह है कि क्या GoLang ऐसे टूल बनाने में कोई स्पष्ट लाभ देता है।
  • Dive की व्यावहारिकता

    • Dive का हर महीने कई बार उपयोग होता है, और यह तब काम आता है जब किसी खास फ़ाइल के layer में मौजूद होने की पुष्टि करनी हो और उसकी contents देखनी हो।
    • फिलहाल इसे container चलाकर या फ़ाइल की contents निकालकर folder browse करने के तरीके से हल किया जाता है।
  • Google का container-diff टूल

    • container-diff यह जाँचने में उपयोगी है कि bash में pipe की गई कोई random script सिस्टम पर क्या करने वाली है।
  • अन्य शानदार TUI terminal tools

    • Dive के अलावा lazydocker, dry जैसे शानदार TUI terminal tools भी हैं।
    • Docker श्रेणी के भीतर भी और tools मौजूद हैं।
    • terminal tools लिंक
  • Docker tar archive क्यों इस्तेमाल करता है

    • यह सवाल कि Docker, layer contents के लिए सामान्य directory की जगह tar archive क्यों इस्तेमाल करता है।
    • यह टूल उस समस्या को हल करता है जो शायद मूल रूप से होनी ही नहीं चाहिए थी।
  • Dive का शानदार प्रभाव

    • Dive ने कई बार बहुत मदद की है और layers के बारे में बहुत कुछ सीखने का मौका दिया है।
    • यह इतना अच्छा है कि Docker Desktop ने भी इसकी functionality की नकल की है।