Apa itu Kontainer dan Gambar Docker
Gambar Docker adalah fondasi Kontainer Docker. Gambar adalah paket eksekusi mandiri yang ringan dan mencakup segala sesuatu yang diperlukan untuk menjalankan sebuah perangkat lunak, termasuk kode, runtime, alat sistem, perpustakaan, dan pengaturan. Kontainer Docker adalah instance runtime dari Gambar Docker, memberikan lingkungan terisolasi dan konsisten di mana aplikasi dapat berjalan.
Kontainer dan Gambar Docker menawarkan beberapa keuntungan, termasuk:
-
Portabilitas
Aplikasi berjalan konsisten di berbagai platform, memastikan proses implementasi yang lancar. -
Efisiensi resource
Kontainer ringan, berbagi resource sistem host, sehingga mengurangi biaya infrastruktur. -
Skalabilitas
Aplikasi dapat dengan cepat diskalakan sesuai permintaan. -
Kontrol versi
Gambar dapat diberi versi dan digulirkan kembali ke versi sebelumnya jika diperlukan. -
Kolaborasi
Tim dapat berbagi dan berkolaborasi pada Gambar Docker menggunakan registry seperti Docker Hub.
Terminologi Kunci
-
Dockerfile
Script yang berisi instruksi untuk membuat Gambar Docker. -
Gambar Docker
Paket eksekusi mandiri yang ringan dan mencakup segala sesuatu yang diperlukan untuk menjalankan sebuah perangkat lunak. -
Kontainer Docker
Instance runtime dari Gambar Docker, memberikan lingkungan terisolasi untuk aplikasi berjalan. -
Docker Registry
Layanan terpusat untuk berbagi dan mendistribusikan Gambar Docker. -
Docker Hub
Registry publik default untuk Gambar Docker, yang dipelihara oleh Docker Inc. -
Data Volume
Mekanisme untuk mempertahankan data yang dihasilkan dan digunakan oleh Kontainer Docker.
Gambar Docker
Gambar Docker adalah fondasi Kontainer Docker. Di bab ini, saya akan membahas pembuatan dan manajemen Gambar Docker, serta cara bekerja dengan registry Gambar Docker.
Membuat Gambar Docker
Untuk membuat Gambar Docker, Anda perlu menentukan Dockerfile dan kemudian membangun gambar menggunakan perintah Docker.
Dockerfile
Dockerfile adalah script yang berisi instruksi untuk membuat Gambar Docker. Dimulai dengan gambar dasar, diikuti dengan berbagai perintah untuk mengkonfigurasi lingkungan, menginstal dependensi, dan menyalin file aplikasi. Berikut adalah contoh Dockerfile sederhana:
# Gunakan gambar dasar Python resmi
FROM python:3.8
# Atur direktori kerja
WORKDIR /app
# Salin file requirements dan instal dependensi
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Salin kode aplikasi
COPY . .
# Ekspos port aplikasi
EXPOSE 8080
# Jalankan aplikasi
CMD ["python", "app.py"]
Membangun Gambar Docker
Setelah membuat Dockerfile, Anda dapat membangun Gambar Docker dengan menjalankan perintah berikut di direktori yang sama dengan Dockerfile:
$ docker build -t my_app:1.0 .
Perintah ini akan membuat Gambar Docker bernama my_app
dengan tag 1.0
.
Mengelola Gambar Docker
Setelah membangun Gambar Docker, Anda perlu mengelolanya. Tugas-tugas umum termasuk mencantumkan gambar, menghapus gambar, dan menandai gambar.
Mencantumkan Gambar
Untuk mencantumkan semua Gambar Docker yang tersedia di sistem Anda, jalankan perintah berikut:
$ docker images
Menghapus Gambar
Untuk menghapus Gambar Docker, gunakan perintah berikut:
$ docker rmi <IMAGE_ID>
Ganti <IMAGE_ID>
dengan ID aktual gambar yang ingin Anda hapus.
Registry Gambar Docker
Registry Gambar Docker adalah layanan terpusat untuk berbagi dan mendistribusikan Gambar Docker. Ada registry publik dan pribadi yang tersedia.
Docker Hub
Docker Hub adalah registry publik default untuk Gambar Docker, yang dipelihara oleh Docker Inc. Anda dapat menggunakan Docker Hub untuk mencari gambar yang sudah ada, menyimpan gambar Anda sendiri, dan berkolaborasi dengan pengembang lain. Untuk memasukkan gambar ke Docker Hub, Anda perlu masuk terlebih dahulu:
$ docker login
Kemudian, tandai gambar Anda dengan nama pengguna Docker Hub dan nama repositori yang diinginkan:
$ docker tag my_app:1.0 <USERNAME>/my_app:1.0
Terakhir, unggah gambar ke Docker Hub:
$ docker push <USERNAME>/my_app:1.0
Registry Pribadi
Selain Docker Hub, Anda juga dapat menggunakan registry pribadi untuk menyimpan dan mendistribusikan Gambar Docker Anda. Registry pribadi dapat dihosting di dalam atau di cloud, menyediakan opsi keamanan dan kontrol akses tambahan. Layanan registry pribadi populer meliputi Google Container Registry, Amazon Elastic Container Registry, dan Azure Container Registry.
Untuk memasukkan gambar ke registry pribadi, pertama tandai gambar dengan URL registry:
$ docker tag my_app:1.0 <REGISTRY_URL>/my_app:1.0
Kemudian, masuk ke registry pribadi (jika diperlukan) dan unggah gambar:
$ docker login <REGISTRY_URL>
$ docker push <REGISTRY_URL>/my_app:1.0
Kontainer Docker
Mari kita jelajahi Kontainer Docker, yang merupakan instance runtime dari Gambar Docker. Di bab ini, saya akan membahas pembuatan, manajemen, dan cara bekerja dengan jaringan dan penyimpanan data pada Kontainer Docker.
Membuat Kontainer Docker
Kontainer Docker dapat dibuat menggunakan perintah docker run
, dengan berbagai opsi tersedia untuk menyesuaikan perilaku kontainer.
Menjalankan Kontainer
Untuk membuat dan memulai Kontainer Docker baru dari gambar, gunakan perintah berikut:
$ docker run -d --name my_container -p 8080:8080 my_app:1.0
Perintah ini membuat kontainer bernama my_container
berdasarkan gambar my_app:1.0
. Flag -d
menjalankan kontainer dalam mode terpisah (background), dan flag -p
memetakan port host 8080 ke port kontainer 8080.
Kontainer Interaktif
Untuk menjalankan kontainer dalam mode interaktif (berguna untuk debugging dan eksplorasi), gunakan flag -it
:
$ docker run -it --name my_container my_app:1.0 /bin/bash
Perintah ini memulai kontainer baru dan membuka shell Bash di dalamnya, memungkinkan Anda berinteraksi dengan sistem file dan proses kontainer.
Mengelola Kontainer Docker
Setelah membuat Kontainer Docker, Anda perlu mengelolanya. Tugas-tugas umum termasuk mencantumkan kontainer, menghentikan kontainer, dan menghapus kontainer.
Mencantumkan Kontainer
Untuk mencantumkan semua Kontainer Docker yang sedang berjalan di sistem Anda, gunakan perintah berikut:
$ docker ps
Untuk mencantumkan semua kontainer, termasuk yang berhenti, tambahkan flag -a
:
$ docker ps -a
Menghentikan Kontainer
Untuk menghentikan Kontainer Docker yang sedang berjalan, gunakan perintah berikut:
$ docker stop <CONTAINER_ID>
Ganti <CONTAINER_ID>
dengan ID aktual kontainer yang ingin Anda hentikan.
Menghapus Kontainer
Untuk menghapus Kontainer Docker yang berhenti, gunakan perintah berikut:
$ docker rm <CONTAINER_ID>
Ganti <CONTAINER_ID>
dengan ID aktual kontainer yang ingin Anda hapus.
Jaringan dan Penyimpanan Data
Kontainer Docker dapat berkomunikasi satu sama lain dan dengan sistem host melalui berbagai opsi jaringan. Selain itu, data yang dihasilkan oleh kontainer dapat dipertahankan menggunakan volume data.
Jaringan Kontainer
Docker menyediakan beberapa opsi jaringan, termasuk:
-
Bridge
Jenis jaringan default, menyediakan jaringan pribadi antara kontainer di host yang sama. -
Host
Menghapus isolasi jaringan, memungkinkan kontainer menggunakan jaringan host secara langsung. -
Overlay
Memungkinkan kontainer berkomunikasi melintasi beberapa host Docker dalam sebuah swarm. -
Macvlan
Menetapkan alamat MAC ke kontainer, membuatnya muncul sebagai perangkat fisik yang terpisah di jaringan.
Untuk membuat jaringan kustom, gunakan perintah berikut:
$ docker network create --driver bridge my_network
Untuk menghubungkan kontainer ke jaringan kustom, gunakan flag --net
saat menjalankan kontainer:
$ docker run -d --name my_container --net my_network my_app:1.0
Volume Data
Volume data digunakan untuk mempertahankan data yang dihasilkan oleh dan digunakan oleh Kontainer Docker. Volume dikelola oleh Docker dan dapat dibagi antara kontainer.
Untuk membuat volume data baru, gunakan perintah berikut:
$ docker volume create my_data
Untuk memasang volume data ke kontainer, gunakan flag -v
saat menjalankan kontainer:
$ docker run -d --name my_container -v my_data:/data