Apr 02, 2026
Faradilla A.
10menit Dibaca
Docker adalah platform open-source yang dirancang untuk menyederhanakan proses pengembangan, distribusi, dan menjalankan aplikasi. Proses pengiriman software menjadi lebih praktis berkat containerization (kontainerisasi), yaitu teknologi yang mengemas aplikasi beserta dependensinya ke dalam unit terisolasi yang disebut container. Dengan metode ini, software bisa berjalan secara konsisten di berbagai lingkungan.
Secara umum, Docker memiliki beberapa komponen utama, seperti Docker Engine, Docker Hub, image, container, Dockerfile, dan Docker Compose. Dengan memahami komponen-komponen ini, Anda bisa membuat, men-deploy, dan mengelola aplikasi berbasis container dengan lebih mudah.
Anda bisa menggunakan Docker melalui command line (CLI), tapi platform ini juga menyediakan versi desktop dengan antarmuka grafis. Proses konfigurasinya pun berbeda. Versi desktop bisa diinstal seperti aplikasi biasa dalam format .dmg atau .exe, sedangkan versi CLI memerlukan penginstalan melalui package manager seperti APT atau Homebrew.
Saat menggunakan Docker, berbagai error bisa muncul di berbagai bagian, mulai dari image, Dockerfile, hingga container yang sedang berjalan. Oleh karena itu, Anda juga perlu memahami jenis error yang umum terjadi, penyebabnya, serta cara mengatasinya agar tidak memengaruhi seluruh proses. Sudah siap belajar Docker? Yuk, langsung scroll ke bawah!
Containerization adalah metode virtualisasi tingkat sistem operasi yang digunakan untuk mengemas aplikasi agar berjalan di ruang pengguna yang terisolasi, yang disebut container.

Container mengemas aplikasi beserta semua komponen yang dibutuhkan, seperti kode, library sistem, dependensi, dan file konfigurasi, dalam satu lingkungan terisolasi.
Berbeda dengan mesin virtual (VM), container lebih ringan karena menggunakan kernel sistem operasi yang sama dari host. Dengan metode ini, aplikasi bisa berjalan secara konsisten di berbagai lingkungan tanpa bergantung pada infrastruktur tertentu.
Manfaat containerization meliputi:
Docker membantu menyediakan cara yang terjamin, efisien, dan terstandar untuk membuat, membagikan, dan menjalankan aplikasi. Dengan menggunakan Docker, Anda juga bisa meminimalkan beberapa masalah umum dalam pengembangan dan deployment software.
Docker mengemas konsep containerization ke dalam beberapa komponen inti yang saling terhubung. Semua komponen ini bekerja bersama sebagai platform untuk mengelola seluruh lifecycle aplikasi berbasis container, mulai dari proses build hingga menjalankan aplikasi multi-layanan.
Docker Engine adalah teknologi open-source inti yang digunakan untuk membangun dan menjalankan container. Komponen ini menggunakan arsitektur client-server untuk mengelola berbagai objek Docker, seperti image, container, dan network.
Docker Engine terdiri dari tiga bagian utama:
Agar lebih mudah dipahami, bayangkan Docker Engine seperti sistem kerja di restoran.
Untuk memastikan Docker Engine berjalan dan terhubung dengan baik, Anda bisa menjalankan perintah berikut:
docker ps
Perintah ini meminta Docker daemon untuk menampilkan daftar container yang sedang berjalan. Kalau Docker Engine berjalan dengan normal, perintah tersebut akan menampilkan daftar container aktif.
Docker Hub adalah registry publik bawaan Docker, yaitu layanan untuk menyimpan dan mendistribusikan image. Platform ini menyediakan berbagai image resmi untuk software populer seperti nginx, Node, dan Python. Selain itu, pengguna juga bisa membuat repositori privat untuk menyimpan image kustom.
Saat membuat container, Anda biasanya membutuhkan berbagai paket software dari image tertentu. Docker Hub membantu menyederhanakan proses tersebut dengan menyediakan repository terpusat untuk mendownload image.
Docker Hub menggunakan tag untuk mengidentifikasi versi image, misalnya latest. Dengan penggunaan tag, Anda bisa memastikan versi yang digunakan tetap konsisten di berbagai environment.
Docker Hub bisa dianalogikan seperti buku resep masakan. Anda bisa mengambil resep yang sudah tersedia, menggunakannya, atau menyimpan resep sendiri untuk digunakan kembali.
Anda bisa berinteraksi dengan Docker Hub menggunakan perintah Docker. Misalnya, gunakan perintah berikut untuk mendownload image dari registry:
docker pull <name>:<tag>
Contohnya, untuk mendownload image Ubuntu terbaru:
docker pull ubuntu:latest
Docker image adalah template hanya-baca yang berisi semua instruksi dan file yang dibutuhkan untuk membuat container. Di dalam image, terdapat kode aplikasi, file konfigurasi, library sistem, dan komponen sistem operasi dasar.
Image dibuat menggunakan Dockerfile. Setiap instruksi dalam Dockerfile akan membentuk lapisan terpisah yang tidak bisa diubah, yang menentukan isi dan perilaku image.
Secara sederhana, image bisa dianggap sebagai blueprint untuk suatu perangkat. Blueprint ini berisi semua instruksi yang diperlukan untuk membangun container, tapi tidak bisa diubah setelah dibuat.
Untuk melihat daftar image yang tersedia di sistem lokal, jalankan perintah:
docker images
Untuk membangun image di direktori saat ini dan memberinya tag, gunakan perintah di bawah ini. Kalau image yang dibutuhkan belum tersedia, Docker akan otomatis mendownloadnya dari Docker Hub:
docker build -t your-image-name:latest .
Saat menggunakan image, sebaiknya Anda menggunakan hanya sedikit base image. Dengan begitu, ukuran image tetap kecil dan potensi celah keamanan dari komponen yang tidak diperlukan bisa diminimalkan.
Container adalah instance yang bisa dijalankan dari sebuah image. Container merupakan lingkungan terisolasi tempat aplikasi berjalan, lengkap dengan konfigurasi, dependensi, dan paket software yang diperlukan.
Saat container dibuat, Docker menambahkan lapisan yang bisa ditulis di atas lapisan hanya-baca milik image. Lapisan ini memungkinkan perubahan dilakukan pada file system di dalam container.
Container dirancang bersifat ephemeral atau stateless. Artinya, container bisa dihentikan, dihapus, dan dibuat ulang dengan konfigurasi yang sama tanpa memengaruhi sistem secara keseluruhan. Satu container biasanya dikelola menggunakan Docker CLI. Untuk mengelola banyak container sekaligus, Anda bisa menggunakan Docker Compose atau tool orkestrasi seperti Kubernetes.
Kalau menggunakan analogi seperti sebelumnya, container adalah mesin yang benar-benar dijalankan berdasarkan blueprint dari image. Saat Anda membuat kontainer Docker, Anda menyiapkan dan memulai mesin tersebut untuk menjalankan proses yang didefinisikan di dalam image.
Untuk menjalankan container interaktif dari image Ubuntu, gunakan perintah berikut:
docker run -it ubuntu /bin/bash
Perintah ini akan menjalankan image Ubuntu, membuat container, lalu membuka shell interaktif.
Dockerfile adalah file teks yang berisi kumpulan instruksi untuk membangun Docker image. Semua konfigurasi didefinisikan di dalamnya, mulai dari base image, variabel lingkungan, hingga kode aplikasi.

Beberapa instruksi yang paling umum digunakan dalam Dockerfile:
Sebagian besar instruksi dalam Dockerfile akan membuat lapisan baru pada image. Namun, beberapa instruksi seperti WORKDIR hanya mengatur metadata tanpa membuat lapisan baru.
Berikut contoh isi Dockerfile:
FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["python", "app.py"]
Docker Compose adalah tool yang digunakan untuk mendefinisikan dan mengelola aplikasi multi-container melalui satu file konfigurasi, biasanya bernama docker-compose.yml.
Di dalam file tersebut, Anda bisa mendefinisikan semua container, network, dan volume yang dibutuhkan untuk menjalankan aplikasi. Setiap container dalam Docker Compose disebut sebagai service. Dengan Docker Compose, Anda bisa menjalankan dan mengelola seluruh service hanya dengan satu perintah.
Tanpa Docker Compose, setiap container harus dikonfigurasi dan dijalankan secara manual melalui Docker CLI. Kalau aplikasi terdiri dari banyak layanan yang saling terhubung, proses ini bisa menjadi cukup rumit dan memakan waktu.
Kalau satu container adalah satu perangkat, Docker Compose bisa dianggap sebagai sistem yang mengatur bagaimana semua perangkat bekerja bersama dalam satu alur. Analoginya seperti cara oven, kulkas, dan pemanggang roti yang dinyalakan bersamaan menggunakan satu sakelar untuk melakukan proses memasak.
Berikut contoh file Docker Compose:
services:
web:
build: ./web # Membangun image dari Dockerfile di direktori ./web
ports:
- "8000:8000" # Memetakan port host 8000 ke port container 8000
depends_on:
- db # Menunggu hingga service db dijalankan
- redis # Menunggu hingga service redis dijalankan
db:
image: postgres:15 # Menggunakan image PostgreSQL 15 resmi
environment:
POSTGRES_USER: myuser # Mengatur username database
POSTGRES_PASSWORD: mypassword # Mengatur password database
POSTGRES_DB: mydb # Mengatur nama database awal
volumes:
- db-data:/var/lib/postgresql/data # Menyimpan data database menggunakan volume bernama
redis:
image: redis:alpine # Menggunakan image Redis ringan untuk caching
volumes:
db-data: # Mendefinisikan volume bernama untuk menyimpan data databaseUntuk menjalankan semua service dalam file docker-compose.yml di di latar belakang, jalankan perintahnya dengan flag -d atau mode detached.
docker compose up -d
Docker Compose juga menyediakan berbagai perintah lain untuk mengelola container sepanjang lifecycle aplikasi. Untuk penjelasan lebih lanjut, Anda bisa membaca panduan tentang Docker Compose.
Proses penginstalan Docker bisa berbeda tergantung pada jenis yang digunakan. Kalau menggunakan Docker Desktop, Anda cukup mendownload paket installer dari website resmi, lalu menginstalnya seperti aplikasi biasa.
Sementara itu, Docker CLI bisa diinstal melalui perintah di package manager sistem, seperti APT di Ubuntu atau Homebrew di macOS. Untuk langkah yang lebih lengkap, Anda bisa melihat dokumentasi resmi sesuai sistem operasi yang digunakan.
Perlu diingat, Docker CLI tidak menyertakan beberapa fitur tambahan seperti Docker Compose sehingga Anda perlu menginstalnya secara terpisah. Kalau menggunakan layanan hosting Docker dari Hostinger, Anda tidak perlu melakukan proses ini karena fitur Docker Manager sudah mendukung Docker Compose secara langsung.


Docker CLI digunakan untuk berinteraksi dengan Docker Engine dan mengelola container. Berikut beberapa perintah dasar Docker yang paling sering digunakan:
Volume adalah mekanisme utama untuk menjaga data tetap tersimpan di Docker. Dengan menggunakan volume, data tetap bisa diakses meskipun container dihapus.
Hal ini penting karena dalam siklus penggunaan container, Anda mungkin perlu menghentikan atau menghapus container untuk keperluan update atau maintenance. Kalau container tersebut menjalankan aplikasi seperti database, menjaga integritas data menjadi hal yang sangat penting.
Docker menyediakan tiga jenis penyimpanan utama:
Berikut langkah-langkah untuk membuat dan mengelola volume:
docker volume create my-database-data
docker run -d \ --name my-database \ -e MYSQL_ROOT_PASSWORD=securepassword \ -v my-database-data:/var/lib/mysql \ mysql:latest
docker volume inspect my-database-data
docker volume prune -a
Selain menggunakan perintah CLI, Anda juga bisa mendefinisikan volume melalui file Docker Compose. Cara ini memudahkan pengelolaan volume, terutama saat Anda menjalankan banyak service.
Sebagai contoh, konfigurasi YAML berikut mencakup langkah-langkah untuk membuat volume dan melakukan mount container seperti pada contoh di atas:
services:
my-database:
image: mysql:latest
container_name: my-database
environment:
MYSQL_ROOT_PASSWORD: securepassword
volumes:
- my-database-data:/var/lib/mysql
volumes:
my-database-data:Jaringan Docker berfungsi untuk mengatur komunikasi antar container dan dengan sistem eksternal. Secara default, Docker akan menghubungkan container ke jaringan bawaan bernama bridge network. Jaringan ini memungkinkan container berkomunikasi dengan host, tetapi kurang fleksibel untuk aplikasi dengan banyak service.
Untuk aplikasi multi-service, sebaiknya gunakan user-defined bridge network. Dengan jenis jaringan ini, container bisa saling berkomunikasi menggunakan nama service, sehingga lebih mudah dikelola dan lebih terstruktur. Hal ini mempermudah penemuan layanan, meningkatkan kontrol terhadap cara kontainer saling berinteraksi, dan meminimalkan gangguan antar layanan.
Anda bisa menghubungkan container ke user-defined bridge network dengan menambahkan direktif networks ke konfigurasi service di file YAML Docker Compose. Berikut contohnya:
services:
my-database:
image: mysql:latest
container_name: my-database
environment:
MYSQL_ROOT_PASSWORD: securepassword
volumes:
- my-database-data:/var/lib/mysql
networks:
- my-app-network #create a networkSelain itu, Anda bisa membuat user-defined bridge network dengan perintah berikut, dengan nama my-app-network:
docker network create my-app-network
Setelah itu, jalankan container menggunakan Docker CLI dengan flag –name untuk menetapkan nama layanan dan –network untuk menentukan jaringan yang akan dihubungkan. Berikut contohnya:
docker run -d \ --name my-database \ --network my-app-network \ -e MYSQL_ROOT_PASSWORD=securepassword \ -v my-database-data:/var/lib/mysql \ mysql:latest
Kalau ingin menambahkan container lain ke network yang sama, cukup jalankan perintah yang sama dengan konfigurasi layanan yang berbeda. Dalam contoh berikut, kita menambahkan flag -p untuk memetakan port internal kontainer 80 ke port 8080 pada mesin host agar bisa diakses dari luar.
docker run -d \ --name my-webapp \ --network my-app-network \ -p 8080:80 \ my-web-app-image:latest
Saat bekerja dengan Docker, masalah yang sering muncul biasanya berkaitan dengan struktur berlapisnya, seperti image, container, volume, dan network. Berikut beberapa masalah yang umum terjadi beserta cara mengatasinya.
Container bisa langsung berhenti setelah dijalankan karena proses utama yang didefinisikan melalui CMD atau ENTRYPOINT di Dockerfile sudah selesai dijalankan atau mengalami error. Kondisi ini juga bisa terjadi kalau Docker mencoba menjalankan service yang hanya berjalan di latar belakang tanpa mode detached.
Beberapa solusi untuk error ini antara lain:
Kalau perubahan pada Dockerfile seperti update versi package tidak terlihat diterapkan, kemungkinan Docker masih menggunakan cache dari layer sebelumnya. Mekanisme caching ini memang mempercepat proses build, tapi bisa menyebabkan perubahan tidak ikut diterapkan.
Walau meningkatkan efisiensi, perubahan pada layer awal Dockerfile bisa menimbulkan masalah, karena instruksi setelahnya menjadi tidak valid.
Cara paling sederhana untuk mengatasi masalah ini adalah memaksa build ulang sepenuhnya dan mengabaikan cache layer. Lakukan dengan menambahkan opsi –no-cache saat memulai proses build, seperti perintah berikut:
docker build --no-cache -t my-app:latest .
Saat menginstal package di Dockerfile, sebaiknya sertakan perintah yang memastikan daftar package selalu diperbarui. Pada sistem berbasis Debian, Anda bisa menggabungkan apt-get update dan apt-get install -y –no-install-recommend dalam satu instruksi RUN:
RUN apt-get update && apt-get install -y --no-install-recommends
Kalau muncul error seperti “denied: requested access to the resource is denied” saat melakukan push image ke registry seperti Docker Hub, biasanya Docker CLI belum terautentikasi dengan registry tersebut.
Untuk mengatasinya, Anda perlu login terlebih dahulu ke registry. Berikut langkah-langkahnya:
docker login my-registry.example.com
docker tag my-local-image:latest my-registry.example.com/my-repo/my-local-image:latest
docker push my-registry.example.com/my-repo/my-local-image:latest
Kalau ingin benar-benar menguasai Docker dan menggunakannya untuk kebutuhan produksi, Anda perlu mempelajari lebih dari sekadar penggunaan dasar, seperti menjalankan satu container atau mencoba beberapa perintah sederhana. Langkah berikutnya adalah mulai memahami cara mengelola aplikasi yang lebih kompleks, terutama yang terdiri dari banyak service dan membutuhkan ketersediaan tinggi.
Selain Docker Compose, Anda juga perlu mempelajari tool orkestrasi seperti Docker Swarm atau Kubernetes. Tool ini digunakan untuk mengelola dan melakukan scaling container di banyak mesin dalam satu cluster, sehingga aplikasi tetap stabil saat beban meningkat.
Selain itu, pemahaman tentang sistem jaringan Docker juga penting. Salah satu yang perlu dipelajari adalah Overlay Network Driver yang digunakan dalam mode Docker Swarm untuk menghubungkan beberapa host dalam satu cluster. Menghubungkan banyak mesin menggunakan jaringan bawaan Docker bisa cukup rumit dan dilakukan secara manual, sedangkan overlay network membuat proses komunikasi antar host menjadi lebih sederhana dan terstruktur.
Terakhir, Anda bisa mulai mengeksplorasi berbagai use case Docker agar lebih memahami bagaimana containerization digunakan dalam praktik, baik untuk pengembangan maupun deployment aplikasi. Selamat mencoba dan semoga berhasil!
Semua konten tutorial di website ini telah melalui peninjauan menyeluruh sesuai standar dan komitmen editorial Hostinger.