Docker Image



Docker Image adalah file, terdiri dari beberapa layer, yang digunakan untuk mengeksekusi kode dalam container Docker. Sebuah  Image  pada dasarnya dibangun dari petunjuk untuk versi lengkap dan eksekusi dari aplikasi, yang bergantung pada host OS  kernel . Saat pengguna Docker menjalankan sebuah image, image tersebut bisa menjadi satu atau beberapa instance dari container itu.

Docker  adalah platform perangkat lunak virtualisasi tingkat OS open source yang terutama dirancang untuk Linux, Windows, dan MacOS. Terkadang memindahkan perangkat lunak dari satu mesin host ke mesin lain akan menyebabkan masalah karena ketergantungan apa pun yang mungkin dimiliki perangkat lunak tersebut. Container yang berpindah dari satu lingkungan Docker ke lingkungan lain dengan OS yang sama akan bekerja tanpa perubahan apa pun, karena image menyertakan semua dependensi yang diperlukan untuk mengeksekusi kode. Docker akan menggunakan fitur isolasi sumber daya di kernel OS, seperti cgroups di Linux, untuk menjalankan beberapa container independen di OS yang sama. 

Penting juga untuk diperhatikan bahwa container  berbeda dari  mesin virtual (VM), yang merangkum seluruh OS dengan kode yang dapat dieksekusi di atas layer abstraksi dari sumber daya perangkat keras fisik. 

Host Docker dapat berupa mesin virtual atau fisik yang menjalankan sistem operasi host. Membangun dan menjalankan kontainer pada host ditangani oleh daemon Docker.

Kebingungan terkadang terjadi di sekitar image dan container Docker yang berurusan dengan ruang disk. Ukuran dan ukuran virtual memang memiliki arti yang berbeda. Ukuran mengacu pada ruang disk yang digunakan oleh layer yang dapat ditulis di setiap container. Di sisi lain, ruang disk yang diperlukan untuk container dan layer yang dapat ditulisi disebut "ukuran virtual". Ini karena layer Image hanya-baca dapat dibagikan di antara container apa pun yang dimulai dari Image yang sama.

Penggunaan Docker Image

Salah satu kasus penggunaan untuk Docker Image adalah sebagai perantara antara fungsi Docker lainnya.

Docker Image menyertakan elemen yang diperlukan untuk menjalankan aplikasi sebagai container - seperti kode, file config, variabel lingkungan, library, dan run time. Jika image di-deploy ke lingkungan Docker, image tersebut dapat dieksekusi sebagai container Docker. Perintah jalankan buruh pelabuhan akan membuat container dari Image yang diberikan.

Docker Image juga merupakan aset yang dapat digunakan kembali yang dapat diterapkan di semua host.

Container Docker vs. Docker Image

Docker Image secara kasar setara dengan "snapshot" di lingkungan mesin virtual lainnya. Ini adalah catatan mesin virtual Docker, atau kontainer Docker, pada suatu titik waktu. Pikirkan Docker Image sebagai Image digital. Container Docker dapat dilihat sebagai cetakan dari Image itu. Docker Image memiliki karakteristik khusus yang tidak dapat diubah. Mereka tidak dapat diubah, tetapi dapat digandakan dan dibagikan atau dihapus. Kekekalan berguna saat menguji perangkat lunak atau konfigurasi baru karena apa pun yang terjadi, Image akan tetap ada, seperti biasa.

Image dan layer Docker

Docker Image terdiri dari beberapa layer. Seorang pengguna menyusun setiap Docker Image untuk menyertakan pustaka sistem, alat, dan file lain serta dependensi untuk kode yang dapat dieksekusi. Pengembang Image dapat menggunakan kembali layer Image statis untuk berbagai proyek. Penggunaan kembali menghemat waktu, karena pengguna tidak harus membuat semuanya dalam Image.

Sebagian besar Docker Image dimulai dengan Image dasar - meskipun pengguna dapat membuatnya sepenuhnya dari awal - dengan perintah build. Image server web Docker juga dapat digunakan untuk membuat container. Setiap Image memiliki satu layer atas yang dapat dibaca / ditulis di atas layer statis. Layer ditambahkan ke Image dasar, menyesuaikan dengan kode sehingga dapat dijalankan dalam container. Setiap layer Docker Image dapat dilihat di bawah / var / lib / docker / aufs / diff, atau melalui perintah riwayat Docker di  antarmuka baris perintah (CLI). Secara default, Docker menampilkan semua Image layer atas, seperti repositori , tag, dan ukuran file. Layer perantara disimpan dalam cache, yang membuat layer atas lebih mudah dilihat. Docker menggunakan driver penyimpanan untuk mengelola konten layer Image.

Saat container baru dibuat dari Image, layer yang dapat ditulis juga dibuat. Layer ini disebut layer container, dan ini menghosting semua perubahan yang dilakukan pada container yang sedang berjalan. Layer ini dapat menyimpan file yang baru ditulis, modifikasi pada file yang sudah ada dan file yang baru dihapus. Layer yang dapat ditulis memungkinkan penyesuaian container. Setiap perubahan yang dibuat pada layer yang dapat ditulis disimpan di layer itu. Beberapa kontainer dapat berbagi Image dasar yang sama dan memiliki status datanya sendiri berkat layer yang dapat ditulis.

Repositori Docker Image

Pengguna Docker dapat menyimpan Image dalam repositori pribadi atau publik  , dan dari sana kemudian dapat menerapkan kontainer, menguji Image dan membagikannya. Docker menawarkan  Docker Hub , yang merupakan layanan registri berbasis cloud yang mencakup repositori Image pribadi dan publik. Ia juga memiliki Docker Trusted Registry, yang menambahkan fitur manajemen Image dan kontrol akses.

Image resmi  telah diproduksi oleh Docker, sedangkan  Image komunitas  adalah Image yang dibuat oleh pengguna Docker. Agen CoScale adalah contoh Docker Image resmi, yang menyediakan pemantauan ke aplikasi Docker. Contoh Docker Image komunitas adalah datadog / docker-dd-agent, yang merupakan container Docker untuk agen di   program manajemen log Datadog.

Image yang sudah ada juga dapat digunakan untuk membuat Image baru. Selain itu, pengguna dapat mengupload image kustom mereka sendiri ke Docker Hub dengan menggunakan perintah docker push. Untuk memastikan kualitas Image komunitas, Docker meninjau Image dan memberikan umpan balik untuk pembuat Image sebelum menerbitkan. Setelah dipublikasikan, pembuat Image bertanggung jawab atas pembaruan. Berhati-hatilah saat mengambil Image dari pihak lain, karena penyerang dapat memperoleh akses ke sistem melalui Image peniru yang dirancang untuk mengelabui pengguna agar mengira bahwa Image tersebut berasal dari sumber tepercaya.

Konsep Image terbaru juga dapat menimbulkan kebingungan. Docker Image yang diberi tag ": terbaru" belum tentu "terbaru" dalam arti biasa. Tag terbaru tidak mengacu pada versi Image yang paling baru didorong. Faktanya, ini hanyalah tag default.

Perintah Docker Image

Menurut Docker, ada sekumpulan perintah Docker Image utama, yang dikategorikan sebagai perintah anak, beberapa diantaranya:

·         docker image build : Membangun image dari Dockerfile.

·         docker image inspect: Menampilkan informasi pada satu atau lebih citra.

·         docker image load: Memuat Image dari arsip tar atau aliran untuk menerima atau membaca input (STDIN).

·         docker image prune: Menghapus Image yang tidak digunakan.

·         docker image pull : Menarik Image atau repositori dari registri.

·         docker image push : Mendorong Image atau repositori ke registri.

·         docker image rm: Menghapus satu atau lebih Image.

·         docker image save: Menyimpan satu atau lebih Image ke arsip tar (dialirkan ke STDOUT secara default).

·         docker image tag: Membuat tag TARGET_IMAGE yang mengacu pada SOURCE_IMAGE.

CLI Docker memungkinkan pengguna untuk memulai perintah tertentu yang menyesuaikan Docker Image. Contoh perintah Docker untuk Image mengikuti:

·         docker history: Menampilkan riwayat Image, termasuk perubahan yang dilakukan padanya dan layernya.

·         docker update: Memungkinkan pengguna untuk memperbarui konfigurasi container.

·         docker tag: Membuat tag, seperti target_image, yang memungkinkan pengguna untuk mengelompokkan dan mengatur Image kontainer.

·         docker searchMencari di Docker Hub untuk apa pun yang dibutuhkan pengguna.

·         docker save: Memungkinkan pengguna untuk menyimpan Image ke arsip.

·         docker compose: Digunakan untuk menangani environment variable.


Comments

Popular posts from this blog

Run Multiple Container Menggunakan Docker Compose