Dive Tool: Docker Katmanlarını Keşfedin ve Boyutu Optimize Edin

The Dive , Docker imajının her katmanını tanımlamanın  yolunu arayan kişilere yardımcı olur. Bunun nedeni, imaj boyutunu küçültmek veya her katmanın işlevini anlamak olabilir.

Dive aracı, özellikle temel imajı takip eden bir Docker imajında (her katmanda) yapılan değişiklikler hakkında fikir edinmekten hoşlananlar için mükemmel bir araçtır.
Aşağıdaki resme bir göz atın!

Dive tool

Yukarıdaki resimde gösterilen bilgilerin karışık olabileceğini biliyorum .

Vurgulanan ilk alanı incelerseniz, seçilen imajdaki tüm katmanları görüntülerken, vurgulanan ikinci alan her katman tarafından yapılan tüm değişiklikleri (yeşil ve sarı ile işaretlenmiş) gösterir.

Standart kullanıcılar bu bilgiyi büyüleyici bulamazken, bir uzman onu çok ilginç bulabilir ve Docker görüntülerinin iç işleyişini keşfedebilir.

Bu nedenle, Dive aracını tercih ettiğiniz Linux dağıtımına nasıl kuracağınızı öğrenmek için bu makaleyi okumaya devam ve en sevdiğiniz Docker görüntüsünün her katmanını keşfetmek için kullanın.

Linux’ta Dive Aracı Nasıl Kurulur

Bu aracın en büyük avantajlarından biri, kurulumdaki esnekliğidir ve size birkaç seçenek sunar. Öyleyse başlayalım…

Dive’ı Ubuntu veya Debian tabanlı Bir Dağıtıma Yükleme

Kurulum adımları çok basittir; Sadece terminalinizi açın ve aşağıdaki komutları birbiri ardına çalıştırın ve işiniz bitti.

$ export DIVE_VERSION=$(curl -sL "https://api.github.com/repos/wagoodman/dive/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
$ curl -OL https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.deb
$ sudo apt install ./dive_${DIVE_VERSION}_linux_amd64.deb

Fedora veya Red Hat tabanlı Bir Dağıtıma Dive Yükleme

RHEL ve Fedora sistemlerinde başlamak için terminalinizi açın ve sırayla aşağıdaki komutları çalıştırın:

$ export DIVE_VERSION=$(curl -sL "https://api.github.com/repos/wagoodman/dive/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
$ curl -OL https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.rpm
$ rpm -i dive_${DIVE_VERSION}_linux_amd64.rpm

Dive’ı Arch veya Manjaro tabanlı Bir Dağıtıma Yükleme

Bir Arch kullanıcısıysanız, bu araç Arch Extra deposunda bulunduğundan ve gösterildiği gibi Pacman kullanılarak kolayca kurulabilmaktedir.

$ pacman -S dive

Homebrew üzerinden Dive kurulumu

Mac kullanıyorsanız veya Linux sisteminizde Brew paket yöneticisi yüklüyse, Dive’ı yüklemek için aşağıdaki komutu kullanabilirsiniz:

$ brew install dive

Git üzerinden Dive yükleme

Bunu çalıştırmak için sisteminizde Go yüklü olması gerekir. Lütfen devam etmeden önce kurulduğundan emin olun.

$ go get github.com/wagoodman/dive

Docker Komutuyla Dalış Yükleme

Dive’ı bir Docker imajı  olarak ayarlamak ve kullanmak için, gösterildiği gibi kabuk yapılandırma dosyanızdaki “dive” takma adını tanımlayabilirsiniz.

alias dive="docker run -ti --rm  -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"

Yukarıdaki komutu ilk çalıştırdığınızda Dive imajı indirilecektir.

Dive  Aracının Kullanımı

Dive komutuna bir Docker deposu atayarak başlayabilirsiniz; Belirtilen imaj zaten yerel olarak mevcutsa, kullanılacaktır; aksi takdirde, Docker Hub’dan indirilecektir (varsayılan).

$ dive nginx:latest

Çıktı:

Pulling image via dive tool

Görüntü yerel olarak bulunamadı, bu yüzden Docker hub’dan indirmeye başladı.

İmaj  indirme hakkında konuşurken, varsayılan olarak kaynak olarak Docker Hub’ı kullanır, ancak” — source ” parametresini kullanarak kolayca farklı bir kaynağa değiştirebilirsiniz.

$ dive <your-image> --source <source>

#OR

$ dive <source>://<your-image>

İmaj  indirildikten sonra, aşağıdaki ekrana yönlendirileceksiniz:

Dive tool section explanation

Dalış aracı ekranı öncelikle beş bölüme ayrılmıştır; Onları ayrı ayrı anlayalım.

  1. Layers  son imajı oluştururken kullanılan tüm çeşitli katmanları görüntüler ve ilk katman tipik olarak temel görüntüdür 🍨.
  2. Current Layer Contents temel imaj (veya ilk katman) dizin yapısını gösterecek ve temel imajda seçilen katman nedeniyle yapılan değişiklikler vurgulanacaktır.
  3. Layer Details seçilen katmanın belirli etiketlerini, kimliğini, özetini ve komut bilgilerini gösterecektir.
  4. Image Details seçilen imaj  adı, boyutu, boşa harcanan alan (daha azı iyidir) ve verimlilik puanı (daha fazlası iyidir) hakkında kısa bir genel bakış sağlar.
  5. Navigation area tüm tuş bağlamalarını görüntüler (burada “^” = “Ctrl Tuşu“).

Başlamak için, temel imajda yapılan her katman değişikliğini tanımlamayı kolaylaştırmak için “Geçerli Katman İçeriği“ olarak da adlandırılan sağ bölümdeki genişletilmiş dizin yapısını daraltmanızı öneririm.

Bunu başarmak için görünümü değiştirmek için “Sekme” tuşuna basmanız ve ardından tüm dizinleri daraltmak için “Ctrl+Boşluk” kısayolunu kullanmanız yeterlidir.

📝
Alternatif olarak, gezinmek için “Ok” tuşunu ve belirli bir dizini daraltmak için “Boşluk” tuşunu kullanabilirsiniz.
Collapsing the base image directory structure

Bir kez daha “Layer” görünümüne dönmek için “Sekme” tuşunu kullanın ve Ok tuşunu kullanarak çeşitli katmanlara gidin.

Monitoring the changes made by layer

Farklı katmanlar arasında gezinirken, belirli bir katmanda duraklatma seçeneğiniz vardır (kırmızı kutu ile işaretlenmiştir).

“Geçerli Katman İçeriği” bölümünü incelediğinizde, seçilen katmanda gerçekleştirilen tüm değişikliklerin vurgulandığını göreceksiniz.

Tüm katmanlar tarafından yapılan tüm toplu imaj değişikliklerini tek seferde “Katmanlar” ın altına kaydırarak ve ardından “Ctrl+A” kısayol tuşunu kullanarak da görüntüleyebilirsiniz.

Monitoring all the changes made by all layer

İnceleme işlemi sırasında oldukça yararlı olabilecek aşağıdaki kısayol tuşları listesine de başvurabilirsiniz:

Kısayol TuşuTanım
Ctrl + CQuit
TabKatman ve dosya ağacı görünümleri arasında geçiş yapma
Ctrl + FSağlanan anahtar kelimeye göre dosyaları filtreleyin
Ctrl + ATüm toplu görüntü değişikliklerini görüntüleme
Ctrl + LGeçerli katman değişikliklerini görüntüleme
SpaceBir dizini daraltma/daraltma
Ctrl + SpaceTüm dizinleri daralt/çöz
Ctrl + UYalnızca değiştirilen dosyaları göster / gizle
Ctrl + BKatmanlar içeriğinden “İzin“, “Kullanıcı Kimliği:GİD“ ve “Boyut” sütunlarını kaldırın ve yalnızca dosya özniteliklerini görüntüleyin
Ctrl + RKaldırılan dosyaları göster / gizle
Ctrl + MDeğiştirilen dosyaları göster / gizle

Bu, Dive  aracıyla daha sonraki yolculuğunuzda size rehberlik etmek için yeterli olacaktır.

Ancak, bu makaleyi tamamlamadan önce, seçilen imajda gereksiz yer kaplayan tüm atık dosyaları incelemek için “dive” komutuna “CI=true” ekleyebileceğinizi de belirtmek isterim (bu, kullanıcı arayüzüne olan ihtiyacı atlar).

$ CI=true dive nginx:latest

Çıktı:

Display the waste files that occupy unnecessary space in docker image

 

 

 

Yazının orijinalini buradan okuyabilirisniz.

Hüseyin GÜÇ

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım. Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum. Son 6 yıldır  sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum. Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.