Panduan Pemula Docker: Mulai Cepat Mengontainerisasi Aplikasi Anda
Panduan Pemula Docker: Mulai Cepat Mengontainerisasi Aplikasi Anda
Docker telah menjadi bagian tak terpisahkan dari pengembangan dan penerapan perangkat lunak modern. Meskipun diskusi seputar Kubernetes sangat luas, Docker tetap menjadi alat pilihan bagi banyak perusahaan untuk membangun, menguji, dan menerapkan aplikasi. Artikel ini akan membawa Anda memulai dengan cepat dengan Docker, memahami konsep intinya, dan memberikan contoh praktis untuk membantu Anda memulai mengontainerisasi aplikasi Anda.
Konsep Inti Docker
Sebelum memulai praktik, penting untuk memahami beberapa konsep inti Docker:
-
Image (Citra): Image adalah templat hanya-baca yang berisi semua yang dibutuhkan untuk menjalankan aplikasi: kode, lingkungan runtime, alat sistem, pustaka, dan dependensi. Mirip dengan image mesin virtual, tetapi lebih ringan.
-
Container (Kontainer): Container adalah instance yang berjalan yang dibuat dari image. Ini adalah instance runtime dari image, yang berisi aplikasi dan semua dependensinya. Container saling terisolasi, memiliki sistem file, proses, dan ruang jaringan sendiri.
-
Docker Hub: Docker Hub adalah repositori image publik tempat Anda dapat mengunduh image yang telah dibuat sebelumnya, atau mengunggah image Anda sendiri. Mirip dengan GitHub, tetapi khusus untuk image Docker.
-
Dockerfile: Dockerfile adalah file teks yang berisi semua instruksi untuk membangun image Docker. Dengan menulis Dockerfile, Anda dapat mengotomatiskan proses pembuatan image.
-
Docker Compose: Docker Compose adalah alat untuk mendefinisikan dan menjalankan aplikasi Docker multi-kontainer. Ini memungkinkan Anda menggunakan file YAML untuk mengonfigurasi layanan aplikasi, lalu menggunakan satu perintah untuk memulai atau menghentikan semua layanan.
Instalasi Docker
Pertama, Anda perlu menginstal Docker. Docker menyediakan paket instalasi untuk berbagai sistem operasi. Kunjungi Situs Web Resmi Docker, dan ikuti petunjuk yang sesuai untuk instalasi.
Setelah instalasi selesai, Anda dapat memverifikasi apakah Docker telah diinstal dengan benar dengan menjalankan perintah docker --version.
Mengontainerisasi Aplikasi Python Sederhana
Kita akan membuat aplikasi Python sederhana, dan menggunakan Docker untuk mengontainerisasinya.
1. Membuat Aplikasi Python
Buat file bernama app.py, yang berisi kode berikut:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, Docker!"
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0')
Aplikasi Flask sederhana ini akan mengembalikan "Hello, Docker!" pada jalur root /.
2. Membuat File requirements.txt
Aplikasi bergantung pada pustaka Flask, kita perlu membuat file requirements.txt untuk mendeklarasikan dependensi ini.
Flask
3. Membuat Dockerfile
Buat file bernama Dockerfile, dan tambahkan konten berikut:
# Menggunakan image Python resmi sebagai image dasar
FROM python:3.9-slim-buster
# Mengatur direktori kerja
WORKDIR /app
# Menyalin file requirements.txt ke direktori kerja
COPY requirements.txt .
# Menginstal dependensi
RUN pip install --no-cache-dir -r requirements.txt
# Menyalin kode aplikasi ke direktori kerja
COPY app.py .
# Membuka port 5000
EXPOSE 5000
# Mendefinisikan perintah untuk memulai
CMD ["python", "app.py"]
Penjelasan Dockerfile:
FROM python:3.9-slim-buster: Menentukan image dasar sebagai versi ringkas dari Python 3.9.WORKDIR /app: Menetapkan direktori kerja di dalam container menjadi/app.COPY requirements.txt .: Menyalin filerequirements.txtdari direktori saat ini ke direktori/appdi dalam container.RUN pip install --no-cache-dir -r requirements.txt: Menjalankan perintahpipdi dalam container untuk menginstal dependensi yang ditentukan dalam filerequirements.txt. Parameter--no-cache-dirdapat mengurangi ukuran image.COPY app.py .: Menyalin fileapp.pydari direktori saat ini ke direktori/appdi dalam container.EXPOSE 5000: Mendeklarasikan bahwa container akan mendengarkan port 5000.CMD ["python", "app.py"]: Mendefinisikan perintah yang akan dieksekusi saat container dimulai.
4. Membangun Image Docker
Di direktori yang berisi Dockerfile, jalankan perintah berikut untuk membangun image Docker:
docker build -t my-python-app .
docker build: Perintah untuk membangun image.-t my-python-app: Memberi nama pada image (my-python-app)..: Menentukan direktori tempat Dockerfile berada (direktori saat ini).
Proses pembangunan mungkin memerlukan waktu beberapa saat, tergantung pada kecepatan jaringan dan ukuran dependensi.
5. Menjalankan Container Docker
Jalankan container Docker menggunakan perintah berikut:
docker run -d -p 5000:5000 my-python-app
docker run: Perintah untuk menjalankan container.-d: Menjalankan container dalam mode detached (berjalan di latar belakang).-p 5000:5000: Memetakan port 5000 dari host ke port 5000 di dalam container.my-python-app: Menentukan nama image yang akan digunakan.
6. Memverifikasi Aplikasi
Kunjungi http://localhost:5000 di browser Anda, dan Anda seharusnya melihat "Hello, Docker!".
7. Menghentikan dan Menghapus Container
Gunakan perintah berikut untuk menghentikan container:
docker stop
`` dapat dilihat melalui perintah docker ps.
Gunakan perintah berikut untuk menghapus container:
docker rm
Memulai dengan Docker Compose
Jika aplikasi Anda terdiri dari beberapa layanan, Anda dapat menggunakan Docker Compose untuk mengelolanya.
1. Membuat File docker-compose.yml
Buat file bernama docker-compose.yml, dan tambahkan konten berikut:
version: "3.9"
services:
web:
image: my-python-app
ports:
- "5000:5000"
Penjelasan docker-compose.yml:* version: "3.9": Menentukan versi file Docker Compose.
services: Mendefinisikan layanan aplikasi.web: Mendefinisikan layanan bernama "web".image: my-python-app: Menentukan image yang digunakan oleh layanan.ports: Mendefinisikan pemetaan port.
2. Memulai Aplikasi
Di direktori yang berisi file docker-compose.yml, jalankan perintah berikut untuk memulai aplikasi:
docker-compose up -d
docker-compose up: Perintah untuk memulai aplikasi.-d: Menjalankan kontainer dalam mode detached (terpisah).
3. Menghentikan Aplikasi
Gunakan perintah berikut untuk menghentikan aplikasi:
docker-compose down
Praktik Terbaik Keamanan Docker
Seperti yang dapat dilihat dari diskusi, keamanan image Docker adalah masalah penting. Berikut adalah beberapa praktik terbaik keamanan Docker:
- Gunakan Image Resmi: Sebisa mungkin gunakan image yang disediakan secara resmi, karena image ini biasanya telah dipindai dan dipelihara keamanannya.
- Pindai Kerentanan Image: Gunakan alat seperti Trivy untuk memindai kerentanan yang diketahui dalam image, dan perbarui image secara berkala.
- Gunakan Prinsip Hak Akses Terkecil: Hindari menjalankan kontainer sebagai pengguna root.
- Batasi Sumber Daya Kontainer: Gunakan cgroups untuk membatasi penggunaan CPU dan memori kontainer.
- Perbarui Image Secara Teratur: Jaga agar image tetap diperbarui untuk memperbaiki kerentanan keamanan.
- Gunakan Alat Pemindaian Keamanan: Alat seperti Snyk, Clair, dll. dapat diintegrasikan ke dalam alur CI/CD Anda untuk secara otomatis memindai kerentanan image.





