Belajar Docker bagian 3
Eko Susilo Harjo September 26, 2024

Apa Itu Docker Image?
Docker Image adalah blueprint atau cetakan dari aplikasi yang ingin Anda jalankan di dalam container. Sebuah Docker Image berisi semua file, libraries, dependensi, serta pengaturan konfigurasi yang dibutuhkan aplikasi agar dapat berjalan di berbagai lingkungan. Dalam konteks Docker, image bersifat read-only, dan Anda dapat membuat banyak container dari satu image yang sama.
Sebagai contoh, jika Anda ingin menjalankan aplikasi berbasis Node.js, Anda dapat menggunakan image Docker yang berisi Node.js dan dependensi lainnya. Saat image tersebut dijalankan, ia akan menjadi container yang berjalan terisolasi dari sistem utama.
Cara Membuat Docker Image
Membuat Docker Image dapat dilakukan melalui Dockerfile. Dockerfile adalah file teks sederhana yang berisi instruksi tentang cara membangun image. Berikut adalah contoh sederhana Dockerfile untuk aplikasi Node.js:
# Menggunakan image Node.js versi terbaru dari Docker Hub
FROM node:latest
# Mengatur direktori kerja di dalam container
WORKDIR /app
# Menyalin file aplikasi ke dalam container
COPY . .
# Menginstal dependensi aplikasi
RUN npm install
# Menentukan perintah yang dijalankan saat container dimulai
CMD ["npm", "start"]
Langkah-langkah untuk membuat image:
- Buat file bernama
Dockerfile
di direktori proyek Anda. - Jalankan perintah berikut di terminal untuk membangun Docker Image dari Dockerfile
docker build -t nama-aplikasi:versi .
Contohsudo docker build -t my-node-app:1.0 .
- Setelah proses build selesai, image baru Anda dapat dilihat dengan perintah:bashCopy code
sudo docker images
Docker Hub: Mengunduh dan Menggunakan Image
Docker Hub adalah repository online yang menyediakan berbagai Docker Image yang bisa diunduh dan digunakan secara gratis. Ini mirip dengan App Store untuk Docker Image, di mana Anda bisa menemukan berbagai image yang dibutuhkan, mulai dari sistem operasi seperti Ubuntu hingga server web seperti Nginx.
Cara Mengunduh Docker Image dari Docker Hub
Mengunduh image dari Docker Hub sangat mudah. Berikut adalah langkah-langkahnya:
- Gunakan perintah
docker pull
untuk mengunduh image dari Docker Hubsudo docker pull [nama-image]
Contohsudo docker pull nginx
Perintah ini akan mengunduh image Nginx dari Docker Hub ke sistem Anda. - Setelah image diunduh, Anda bisa melihatnya dengan perintah
sudo docker images
Anda akan melihat image Nginx yang baru saja diunduh terdaftar di sana.
Membuat Container dari Image
Setelah Anda memiliki Docker Image, langkah selanjutnya adalah menjalankan container berdasarkan image tersebut. Container adalah instance dari Docker Image yang dapat dijalankan, dihentikan, atau dihapus sesuai kebutuhan.
Cara Membuat dan Menjalankan Container
Untuk menjalankan container dari Docker Image, Anda bisa menggunakan perintah berikut:
sudo docker run -d --name nama-container -p 80:80 nginx
Penjelasan perintah:
-d
: Menjalankan container di background (detached mode).--name nama-container
: Memberikan nama untuk container yang dijalankan.-p 80:80
: Memetakan port 80 di host ke port 80 di dalam container.nginx
: Nama image yang digunakan untuk membuat container.
Contoh di atas akan menjalankan container berbasis image Nginx dan memetakan port 80 di host agar Anda bisa mengakses server web melalui http://localhost:80
.
Anda juga bisa memeriksa container yang sedang berjalan dengan perintah:
sudo docker ps
Jika Anda ingin menghentikan container, gunakan perintah berikut:
sudo docker stop nama-container
Dan untuk menghapus container:
sudo docker rm nama-container
Perbedaan antara Containers dan Virtual Machines
Seringkali, orang membandingkan Docker Containers dengan Virtual Machines (VM). Keduanya memang memungkinkan Anda untuk menjalankan aplikasi di lingkungan terisolasi, tetapi ada beberapa perbedaan mendasar antara keduanya.
1. Arsitektur
- Containers: Berjalan di atas kernel host yang sama, sehingga lebih ringan dan cepat. Setiap container hanya memiliki aplikasi dan dependensi yang dibutuhkan, tanpa harus mengemas seluruh sistem operasi.
- Virtual Machines: Berjalan di atas hypervisor dan memerlukan sistem operasi lengkap di setiap VM. Ini berarti setiap VM membutuhkan lebih banyak resource, karena tidak hanya aplikasi yang harus dijalankan, tetapi juga OS.
2. Ukuran
- Containers: Jauh lebih kecil dibandingkan VM. Karena container hanya mengemas aplikasi dan dependensinya, mereka menggunakan jauh lebih sedikit resource dibandingkan VM.
- Virtual Machines: Lebih besar karena mereka mengemas seluruh OS di dalamnya. Setiap VM berisi kernel OS-nya sendiri, yang membuatnya lebih berat dan memakan lebih banyak resource.
3. Kecepatan Startup
- Containers: Karena mereka lebih ringan, container dapat dimulai dalam hitungan detik. Tidak perlu mem-boot OS, hanya aplikasi yang perlu dijalankan.
- Virtual Machines: Karena harus mem-boot seluruh OS, VM membutuhkan waktu lebih lama untuk startup, sering kali dalam hitungan menit.
4. Isolasi
- Containers: Walaupun lebih ringan, container memberikan isolasi yang cukup kuat antar aplikasi. Namun, karena berbagi kernel yang sama, mereka kurang terisolasi dibandingkan VM.
- Virtual Machines: Memberikan isolasi penuh karena setiap VM memiliki OS-nya sendiri. Namun, isolasi ini datang dengan biaya resource yang lebih tinggi.
5. Penggunaan Resource
- Containers: Lebih hemat resource karena hanya mengemas aplikasi dan dependensi. Ini berarti Anda dapat menjalankan lebih banyak container pada satu mesin fisik dibandingkan dengan VM.
- Virtual Machines: Karena setiap VM mengemas OS-nya sendiri, mereka memerlukan lebih banyak resource, baik CPU, RAM, maupun penyimpanan.
Kesimpulan
Docker Image dan Containers adalah inti dari teknologi Docker. Image bertindak sebagai blueprint yang dapat digunakan untuk membuat container. Anda dapat mengunduh image dari Docker Hub atau membuatnya sendiri menggunakan Dockerfile. Dengan container, Anda bisa menjalankan aplikasi secara efisien dan hemat resource dibandingkan menggunakan Virtual Machines. Memahami perbedaan antara container dan VM juga membantu dalam memilih solusi yang tepat untuk kebutuhan Anda.
Docker tidak hanya membantu dalam pengembangan, tetapi juga mempermudah proses deployment dan scaling aplikasi di berbagai platform, baik itu di server lokal maupun cloud.
Discover more from teknologi now
Subscribe to get the latest posts sent to your email.