10 poin oleh GN⁺ 2024-01-09 | 1 komentar | Bagikan ke WhatsApp

Alat eksplorasi image Docker dive

  • Analisis image Docker: Dapat menganalisis image Docker menggunakan perintah dive serta tag/ID/digest image.
  • Langsung menggunakan perintah Docker: Dengan mengatur alias, dive dapat digunakan langsung sebagai perintah Docker.
  • Build di Macbook: Pada Macbook yang hanya mendukung Docker container engine, image dapat dibangun dan dianalisis menggunakan dive.
  • Integrasi pipeline CI: Dengan menetapkan variabel lingkungan CI=true, image dapat dianalisis tanpa UI dan pemborosan ruang dapat diminimalkan.

Fitur dasar

  • Menampilkan isi image Docker per layer: Isi layer yang dipilih dan gabungan isi dari layer sebelumnya dapat dilihat di sisi kanan.
  • Menampilkan perubahan pada tiap layer: Di pohon file, file yang diubah, dimodifikasi, ditambahkan, atau dihapus akan ditampilkan.
  • Perkiraan "efisiensi image": Memperkirakan jumlah ruang terbuang yang terkandung dalam image, lalu memberikan skor efisiensi dan ukuran ruang file yang terbuang.
  • Siklus build/analisis yang cepat: Dengan perintah dive build -t some-tag ., image Docker dapat langsung dianalisis setelah dibangun.
  • Mendukung berbagai sumber image dan container engine: Melalui opsi --source, dapat dipilih dari mana image container akan diambil.

Cara instalasi

  • Ubuntu/Debian: Instal dive menggunakan curl dan apt.
  • RHEL/Centos: Instal dive menggunakan curl dan rpm.
  • Arch Linux: Dapat diinstal melalui pacman.
  • Mac: Gunakan Homebrew atau MacPorts, atau unduh build Darwin dari halaman rilis.
  • Windows: Unduh rilis terbaru.
  • Go tools: Memerlukan Go versi 1.10 atau lebih baru, instal dengan go get.
  • Nix/NixOS: Gunakan nix-env untuk instalasi.
  • Docker: Ambil image dengan docker pull, lalu jalankan dengan menyertakan file socket Docker.

Integrasi CI

  • Menetapkan variabel lingkungan CI=true: Menganalisis image Docker tanpa UI dan menampilkan lulus/gagal melalui return code.
  • Mengatur aturan melalui file .dive-ci: Dapat menetapkan kriteria lulus/gagal berdasarkan efisiensi, jumlah ruang terbuang, dan persentasenya.

Key binding

  • Berbagai key binding memungkinkan pengoperasian tampilan layer dan file tree di dalam UI.

Pengaturan UI

  • Melalui file konfigurasi, berbagai opsi dapat disesuaikan untuk mengubah perilaku dive.

Opini GN⁺

  • Pentingnya: dive adalah alat yang sangat berguna untuk mengoptimalkan ukuran image Docker dan mengurangi pemborosan. Ini dapat membantu menekan biaya infrastruktur cloud dan mendukung pengelolaan sumber daya yang efisien.
  • Menarik: Kemampuan menganalisis setiap layer image Docker secara rinci dan memeriksa perubahan secara visual merupakan fitur yang sangat menarik bagi developer dan administrator sistem.
  • Bermanfaat: Dengan mengintegrasikan dive ke pipeline CI/CD, analisis image otomatis dapat membantu menjaga kualitas secara berkelanjutan dan meningkatkan efisiensi.

1 komentar

 
GN⁺ 2024-01-09
Komentar Hacker News
  • Crane dan pustaka go-containerregistry

    • Crane sangat bagus untuk manipulasi image dan layer, dan dibangun di atas pustaka go-containerregistry.
    • Bisa menambahkan layer baru, serta mengubah metadata image yang ada (variabel lingkungan, label, entrypoint, dan lain-lain).
    • Bisa "meratakan" beberapa layer menjadi satu layer tunggal, atau melakukan "rebase" image (menerapkan kembali perubahan ke base image yang baru/diperbarui).
    • Semua pekerjaan dilakukan langsung di registry sehingga tidak memerlukan Docker (meski tetap berguna saat membuat image asli).
    • Tautan penggunaan Crane
  • Kegunaan Dive

    • Dive sangat berguna untuk memahami cara kerja image Docker dan cara menulis Dockerfile yang efisien.
    • Berbeda dengan hanya membaca dokumentasi, melihat dampak perubahan Dockerfile terhadap struktur layer hasilnya sangat membantu pemahaman.
    • Dive adalah alat yang esensial untuk belajar dan membangun keyakinan tentang apa tepatnya yang sedang dibangun/dideploy.
    • Ada juga alat lain bernama Dredge yang digunakan untuk membandingkan perbedaan layer.
    • Tautan penggunaan Dredge
  • Fitur tersembunyi Dive

    • Dive bukan hanya sangat berguna, penulisnya juga pengembang yang hebat dan sangat menyenangkan untuk diajak bekerja sama.
  • Pertanyaan tentang alasan penggunaan GoLang

    • Penasaran mengapa sebagian besar alat container/infrastruktur ditulis dengan GoLang.
    • Contohnya Docker, Podman, nerdctl, Terraform, Kubernetes, dan lainnya.
    • Pertanyaan apakah GoLang memang memberi keunggulan yang jelas untuk membangun alat-alat semacam ini.
  • Kepraktisan Dive

    • Dive dipakai beberapa kali setiap bulan, dan berguna saat ingin memeriksa apakah file tertentu ada di dalam layer serta melihat isi file tersebut.
    • Saat ini biasanya diatasi dengan menjalankan container atau mengekstrak isi file lalu menelusuri folder.
  • Alat container-diff dari Google

    • container-diff berguna untuk memeriksa skrip acak yang di-pipe ke bash agar terlihat apa yang akan dilakukan terhadap sistem.
  • Alat terminal TUI hebat lainnya

    • Selain Dive, ada alat terminal TUI hebat lain seperti lazydocker dan dry.
    • Ada juga alat-alat dalam kategori Docker.
    • Tautan alat terminal
  • Alasan Docker menggunakan arsip tar

    • Timbul pertanyaan mengapa Docker memakai arsip tar untuk isi layer alih-alih direktori biasa.
    • Alat tersebut memecahkan masalah yang seharusnya sejak awal tidak perlu ada.
  • Efek mengejutkan Dive

    • Dive sudah sangat membantu berkali-kali dan memungkinkan belajar banyak tentang layer.
    • Bahkan Docker Desktop sampai meniru fungsinya karena memang sebagus itu.