Mengenal Docker dan Container: Pengertian, Cara Kerja, dan Contoh Penggunaan ## Pengertian Docker dan Container Docker adalah platform open-source untuk pengembangan, pengiriman, dan menjalankan aplikasi menggunakan container. Container adalah unit perangkat lunak yangstandar yang membungkus kode dan dependensinya sehingga aplikasi dapat berjalan secara konsisten di berbagai lingkungan. Container berbeda dari virtual machine (VM) karena menggunakan resource sistem operasi host secara langsung, sehingga lebih ringan dan cepat dibandingkan VM. ## Cara Kerja Docker Docker bekerja dengan konsep: 1. Docker Image: Template read-only yang berisi instruksi untuk membuat container. Image mencakup OS, aplikasi, dependensi, dan konfigurasi. 2. Docker Container: Instance dari image yang berjalan secara isolasi. Container dapat dibuat, dimulai, dihentikan, dan dihapus. 3. Docker Registry: Tempat menyimpan image, seperti Docker Hub. Proses bekerja: 1. Developer menulis Dockerfile yang mendefinisikan cara membangun image. 2. Image dibangun menggunakan perintah docker build. 3. Container dijalankan dari image menggunakan docker run. 4. Container berjalan secara isolasi dari host dan container lain. ## Komponen Utama Docker - Dockerfile: File teks berisi instruksi untuk membangun image. - Image: Paket standar yang berisi aplikasi dan dependensinya. - Container: Instance berjalan dari image. - Docker Compose: Alat untuk mendefinisikan dan menjalankan aplikasi multi-container. - Docker Hub: Cloud-based registry untuk berbagi image. ## Contoh Penggunaan Docker ### Contoh 1: Dockerfile Sederhana ```dockerfile FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . EXPOSE 8080 CMD ["python", "app.py"] ``` ### Contoh 2: Perintah Docker Dasar ```bash # Membangun image docker build -t myapp:1.0 . # Menjalankan container docker run -d -p 8080:8080 --name myapp myapp:1.0 # Melihat container yang berjalan docker ps # Melihat log container docker logs myapp # Menghentikan container docker stop myapp # Menghapus container docker rm myapp # Menghapus image docker rmi myapp:1.0 ``` ### Contoh 3: Docker Compose ```yaml version: '3.8' services: web: build: . ports: - "8080:8080" depends_on: - db db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: secret MYSQL_DATABASE: mydb volumes: - db_data:/var/lib/mysql volumes: db_data: ``` Jalankan dengan: `docker-compose up -d` ## Manfaat Docker - Konsistensi lingkungan development, testing, dan production. - Isolasii aplikasi yang lebih baik. - Resource yang lebih efisien dibanding VM. - Deployment yang cepat dan mudah. - Skalabilitas horizontal yang sederhana. ## Kesimpulan Docker dan container telah merevolusi cara aplikasi dikembangkan dan dideploy. Dengan menggunakan Docker, developer dapat memastikan aplikasi berjalan konsisten di berbagai lingkungan, sementara tim DevOps dapat melakukan deployment yang lebih cepat dan andal.