Mengenal Arsitektur Docker: Engine, Images, dan Containers
Hai, teman-teman! Kali ini kita bakal ngobrolin tentang arsitektur Docker. Buat yang belum tau, Docker itu adalah platform yang memungkinkan kita untuk mengembangkan, mengirim, dan menjalankan aplikasi dengan menggunakan container. Nah, dalam arsitektur Docker, ada tiga komponen utama yang perlu kita pahami: Engine, Images, dan Containers. Yuk, kita bahas satu per satu!
1. Docker Engine
Docker Engine adalah jantung dari Docker. Ini adalah aplikasi client-server yang terdiri dari tiga komponen utama:
- Server: Ini adalah daemon yang disebut
dockerd
. Dia bertanggung jawab untuk membuat dan mengelola Docker objects seperti images, containers, networks, dan volumes. - REST API: Ini adalah antarmuka yang digunakan oleh aplikasi untuk berinteraksi dengan daemon Docker. Dengan REST API, kita bisa mengontrol Docker dari jarak jauh.
- CLI (Command Line Interface): Ini adalah alat yang kita gunakan untuk berinteraksi dengan Docker melalui perintah-perintah di terminal. Contohnya,
docker run
,docker build
, dan lain-lain.
Jadi, ketika kita menjalankan perintah Docker di terminal, CLI akan mengirim perintah tersebut ke daemon Docker melalui REST API. Kemudian, daemon Docker akan menjalankan perintah tersebut dan mengembalikan hasilnya ke CLI.
2. Docker Images
Docker Images adalah template read-only yang digunakan untuk membuat container. Bayangkan image seperti blueprint atau resep untuk membuat container. Image berisi semua file, dependensi, dan konfigurasi yang diperlukan untuk menjalankan aplikasi.
Cara membuat image adalah dengan menulis Dockerfile
. Dockerfile adalah file teks yang berisi serangkaian instruksi untuk membangun image. Setelah Dockerfile dibuat, kita bisa menggunakan perintah docker build
untuk membuat image dari Dockerfile tersebut.
Contoh sederhana Dockerfile:
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y python3
COPY . /app
CMD ["python3", "/app/main.py"]
Setelah image dibuat, kita bisa menyimpannya di Docker Hub atau registry lainnya. Docker Hub adalah layanan cloud untuk menyimpan dan berbagi Docker images. Kita bisa menarik image dari Docker Hub menggunakan perintah docker pull
.
3. Docker Containers
Docker Container adalah instance dari Docker image yang sedang berjalan. Container adalah lingkungan yang terisolasi dan aman untuk menjalankan aplikasi. Setiap container memiliki filesystem, jaringan, dan prosesnya sendiri.
Untuk menjalankan container, kita menggunakan perintah docker run
. Misalnya, jika kita ingin menjalankan container dari image ubuntu:20.04
, kita bisa menggunakan perintah:
docker run -it ubuntu:20.04 /bin/bash
Perintah ini akan membuat dan menjalankan container dari image ubuntu:20.04
, dan membuka shell di dalam container.
Container bersifat ephemeral, artinya mereka bisa dihentikan dan dihapus kapan saja. Namun, data di dalam container akan hilang jika container dihapus. Untuk menyimpan data secara persisten, kita bisa menggunakan Docker volumes.
Hubungan Antara Engine, Images, dan Containers
Nah, sekarang kita udah tau tentang Engine, Images, dan Containers. Tapi gimana hubungannya?
- Docker Engine adalah platform yang menyediakan semua alat dan layanan untuk bekerja dengan Docker.
- Docker Images adalah template yang digunakan oleh Docker Engine untuk membuat container.
- Docker Containers adalah instance dari image yang sedang berjalan di Docker Engine.
Jadi, alur kerjanya kira-kira seperti ini:
- Kita menulis Dockerfile untuk mendefinisikan image.
- Kita menggunakan Docker Engine untuk membangun image dari Dockerfile.
- Kita menggunakan Docker Engine untuk menjalankan container dari image tersebut.
Docker adalah platform yang sangat powerful untuk mengembangkan dan menjalankan aplikasi dalam container. Dengan memahami arsitektur Docker, terutama Engine, Images, dan Containers, kita bisa lebih efektif dalam menggunakan Docker untuk kebutuhan pengembangan dan deployment aplikasi kita.
Nah, itu dia penjelasan singkat tentang arsitektur Docker. Semoga bermanfaat dan sampai jumpa di artikel selanjutnya!