10 puan yazan GN⁺ 2024-01-09 | 1 yorum | WhatsApp'ta paylaş

Docker imaj inceleme aracı dive

  • Docker imaj analizi: dive komutu ve imaj etiketi/ID/digest kullanılarak Docker imajları analiz edilebilir.
  • Docker komutunu doğrudan kullanma: alias ayarlayarak dive doğrudan bir Docker komutu gibi kullanılabilir.
  • Macbook üzerinde derleme: Yalnızca Docker container engine destekleyen Macbook'larda dive ile imaj derleme ve analiz yapılabilir.
  • CI pipeline entegrasyonu: CI=true ortam değişkeni ayarlanarak UI olmadan imaj analizi yapılabilir ve alan israfı en aza indirilebilir.

Temel özellikler

  • Katman bazında Docker imaj içeriğini gösterme: Seçilen katmanın içeriği ve önceki katmanla birleşmiş içerik sağ tarafta görüntülenebilir.
  • Her katmanda değişen içeriği gösterme: Dosya ağacında değiştirilen, güncellenen, eklenen veya silinen dosyalar gösterilir.
  • "İmaj verimliliği" tahmini: İmaj içindeki israf edilen alan miktarı tahmin edilerek verimlilik puanı ve boşa harcanan dosya alanı sunulur.
  • Hızlı derleme/analiz döngüsü: dive build -t some-tag . komutuyla Docker imajı derlendikten hemen sonra analiz edilebilir.
  • Çeşitli imaj kaynakları ve container engine desteği: --source seçeneğiyle container imajının hangi kaynaktan alınacağı seçilebilir.

Kurulum yöntemleri

  • Ubuntu/Debian: curl ve apt kullanılarak dive kurulabilir.
  • RHEL/Centos: curl ve rpm kullanılarak dive kurulabilir.
  • Arch Linux: pacman üzerinden kurulabilir.
  • Mac: Homebrew veya MacPorts kullanılabilir ya da release sayfasından Darwin build indirilebilir.
  • Windows: En güncel release indirilebilir.
  • Go tools: Go sürüm 1.10 veya üzeri gerekir, go get ile kurulabilir.
  • Nix/NixOS: nix-env kullanılarak kurulabilir.
  • Docker: İmaj docker pull ile çekilip Docker socket dosyası eklenerek çalıştırılabilir.

CI entegrasyonu

  • CI=true ortam değişkenini ayarlama: UI olmadan Docker imajı analiz edilir ve geçme/kalma durumu dönüş koduyla gösterilir.
  • .dive-ci dosyasıyla kural ayarlama: Verimlilik, israf edilen alan miktarı ve oranına göre geçme/kalma kriterleri tanımlanabilir.

Tuş atamaları

  • Çeşitli tuş atamalarıyla UI içinde katman ve dosya ağacı görünümleri kontrol edilebilir.

UI ayarları

  • Yapılandırma dosyası üzerinden çeşitli seçenekler özelleştirilerek dive davranışı değiştirilebilir.

GN⁺ görüşü

  • Önemi: dive, Docker imaj boyutunu optimize etmek ve israfı azaltmak için son derece faydalı bir araçtır. Bu da bulut altyapı maliyetlerini düşürmeye ve kaynakların daha verimli yönetilmesine katkı sağlayabilir.
  • İlgi çekici yanı: Docker imajının her katmanını ayrıntılı biçimde analiz edebilmesi ve değişiklikleri görsel olarak gösterebilmesi, geliştiriciler ve sistem yöneticileri için oldukça ilgi çekicidir.
  • Faydası: diveın CI/CD pipeline'ına entegre edilmesiyle otomatik imaj analizi üzerinden sürekli kalite kontrolü ve verimlilik artışı sağlanabilir.

1 yorum

 
GN⁺ 2024-01-09
Hacker News görüşleri
  • Crane ve go-containerregistry kütüphanesi

    • İmaj ve katman manipülasyonu için Crane çok iyi; go-containerregistry kütüphanesini temel alıyor.
    • Yeni katman eklemek, mevcut imajın metadata’sını (environment variable, label, entrypoint vb.) değiştirmek mümkün.
    • Birden çok katmanı tek bir katmana "flatten" etmek veya imajı "rebase" etmek (değişiklikleri yeni/güncellenmiş bir base image üzerine yeniden uygulamak) mümkün.
    • Tüm işlemler doğrudan registry üzerinde yapıldığı için Docker gerekmiyor (yine de orijinal imajı oluştururken hâlâ faydalı).
    • Crane kullanım bağlantısı
  • Dive'ın faydası

    • Dive, Docker imajlarının nasıl çalıştığını ve verimli Dockerfile yazmayı anlamak için çok faydalı.
    • Dokümantasyonu okumaktan farklı olarak, Dockerfile değişikliklerinden sonra ortaya çıkan katman yapısına etkisini görmek anlamayı ciddi şekilde kolaylaştırıyor.
    • Dive, öğrenmek ve tam olarak neyi build/deploy ettiğine dair güven geliştirmek için vazgeçilmez bir araç.
    • Katman farklarını karşılaştırmak için kullanılan Dredge adlı başka bir araç da var.
    • Dredge kullanım bağlantısı
  • Dive'ın gizli özelliği

    • Dive yalnızca çok kullanışlı değil; yazarı da harika bir geliştirici ve birlikte çalışması çok keyifli biri.
  • Neden GoLang kullanıldığına dair soru

    • Çoğu container/altyapı aracının neden GoLang ile yazıldığı merak ediliyor.
    • Docker, Podman, nerdctl, Terraform, Kubernetes gibi örnekler veriliyor.
    • GoLang'ın bu tür araçları geliştirmede bariz avantajlar sağlayıp sağlamadığı soruluyor.
  • Dive'ın pratikliği

    • Dive ayda birkaç kez kullanılıyor; belirli bir dosyanın bir katmanda bulunup bulunmadığını kontrol etmek ve dosya içeriğine bakmak istendiğinde faydalı oluyor.
    • Şu anda bunu container çalıştırarak ya da dosya içeriğini çıkarıp klasörü gezerek çözülüyor.
  • Google'ın container-diff aracı

    • container-diff, sisteme neler yapacağını gösteren rastgele bir scripti bash'e pipe etmeden önce kontrol etmek için faydalı.
  • Diğer harika TUI terminal araçları

  • Docker'ın neden tar arşivleri kullandığı

    • Docker'ın katman içeriği için normal dizinler yerine neden tar arşivleri kullandığı sorgulanıyor.
    • Bu araç, aslında hiç var olmaması gereken bir sorunu çözüyor.
  • Dive'ın şaşırtıcı etkisi

    • Dive birçok kez çok yardımcı oldu ve katmanlar hakkında çok şey öğrenmeyi sağladı.
    • O kadar iyi ki Docker Desktop bile işlevini taklit etti.