Langsung ke konten
Docker

Docker Command Cheat Sheet: 20 Perintah Docker dan Docker Compose yang Wajib Dikuasai Sysadmin

November 1, 2026 · 21 menit baca · Walid Umar

Docker telah menjadi salah satu teknologi penting dalam pengelolaan aplikasi modern. Mulai dari lingkungan pengembangan, laboratorium pembelajaran, hingga server produksi, Docker membantu administrator menjalankan aplikasi secara konsisten tanpa harus melakukan konfigurasi ulang seluruh lingkungan sistem.

Bagi seorang System Administrator, DevOps Engineer, maupun Linux Administrator, kemampuan menggunakan Docker melalui Command Line Interface (CLI) merupakan keterampilan yang sangat berguna.

Bayangkan Anda mengelola server yang menjalankan beberapa aplikasi sekaligus, seperti Nginx, MariaDB, Redis, WordPress, dan aplikasi berbasis Node.js. Tanpa teknologi container, setiap aplikasi perlu dikonfigurasi dengan dependensi dan kebutuhan lingkungan masing-masing.

Docker memungkinkan aplikasi tersebut dijalankan dalam container yang terisolasi secara proses dan lingkungan, tetapi tetap menggunakan kernel sistem operasi host.

Meskipun Docker menyediakan berbagai antarmuka pengelolaan, seperti Portainer, penguasaan perintah Docker melalui terminal tetap penting. Terutama ketika administrator harus melakukan troubleshooting melalui SSH, memeriksa log aplikasi, atau menangani container yang mengalami masalah.

Dalam artikel ini, kita akan mempelajari 20 perintah Docker dan Docker Compose yang paling sering digunakan, lengkap dengan contoh implementasi, penjelasan fungsi, dan praktik terbaik untuk pengelolaan server.

Mengenal Docker dan Cara Kerjanya

Apa Itu Docker?

Docker adalah platform containerization yang memungkinkan pengembang dan administrator mengemas aplikasi beserta dependensinya menjadi sebuah image yang dapat dijalankan sebagai container.

Docker membantu memastikan aplikasi memiliki lingkungan runtime yang konsisten, baik ketika dijalankan pada laptop pengembang, server pengujian, maupun lingkungan produksi yang kompatibel.

Komponen utama Docker meliputi:

  • Docker Engine: Mesin yang bertanggung jawab membangun dan menjalankan container.
  • Docker Image: Template berisi filesystem aplikasi, dependensi, dan konfigurasi.
  • Docker Container: Instance dari image yang sedang atau pernah dijalankan.
  • Dockerfile: File instruksi untuk membangun image Docker.
  • Docker Volume: Mekanisme penyimpanan data persisten.
  • Docker Network: Fasilitas komunikasi antarkontainer dan jaringan eksternal.
  • Docker Compose: Alat untuk mendefinisikan dan mengelola aplikasi multi-container.

Perbedaan Docker Image dan Container

Salah satu konsep yang perlu dipahami sebelum menggunakan Docker adalah perbedaan antara image dan container.

Docker Image merupakan template yang bersifat read-only, sedangkan container merupakan instance dari image tersebut yang memiliki lapisan filesystem yang dapat ditulis.

Sebagai analogi, Docker Image seperti template mesin virtual, sementara container adalah lingkungan aplikasi yang dibuat dari template tersebut.

Satu Docker Image dapat digunakan untuk menjalankan banyak container dengan konfigurasi berbeda.

Contohnya, image Nginx dapat digunakan untuk menjalankan beberapa container web server pada port yang berbeda.

Docker vs Virtual Machine

Docker dan Virtual Machine sama-sama digunakan untuk menjalankan lingkungan aplikasi, tetapi keduanya memiliki pendekatan berbeda.

AspekDocker ContainerVirtual Machine
VirtualisasiLevel sistem operasiLevel perangkat keras
KernelBerbagi kernel hostKernel OS tamu sendiri
StartupUmumnya cepatUmumnya lebih lama
ResourceRelatif ringanLebih besar
IsolasiProses dan namespaceBatas VM melalui hypervisor
PenggunaanMicroservices, aplikasiOS lengkap, isolasi VM

Docker bukan pengganti semua kebutuhan virtualisasi. Dalam banyak infrastruktur modern, Docker justru dijalankan di atas Virtual Machine.

Sebagai contoh, sebuah server Proxmox dapat menyediakan VM Ubuntu Server yang kemudian menjalankan Docker Engine untuk mengelola aplikasi.

Persiapan Menggunakan Docker di Linux

Sebelum mempraktikkan perintah Docker, pastikan Docker Engine dan Docker Compose Plugin telah terpasang.

Tutorial ini menggunakan contoh lingkungan Ubuntu Server dengan Docker Engine yang telah terinstal.

Memeriksa Versi Docker

Jalankan perintah berikut:

docker --version

Untuk memeriksa informasi client dan server Docker:

docker version

Sedangkan untuk memeriksa Docker Compose:

docker compose version

Perintah tersebut membantu memastikan Docker CLI dapat dijalankan dan Compose Plugin tersedia.

Memeriksa Status Docker Engine

Pada server Linux yang menggunakan systemd:

sudo systemctl status docker

Jika Docker belum berjalan, jalankan:

sudo systemctl start docker

Untuk mengaktifkan Docker secara otomatis saat server melakukan booting:

sudo systemctl enable docker

Jika menggunakan instalasi Docker standar, perintah di atas biasanya dapat digunakan.

Perlu diperhatikan bahwa metode pengelolaan layanan dapat berbeda pada instalasi Docker rootless atau lingkungan khusus.

Memeriksa Informasi Docker

Gunakan:

docker info

Perintah ini menampilkan informasi seperti:

  • Jumlah container dan image.
  • Storage driver.
  • Runtime container.
  • Informasi CPU dan memori host.
  • Docker Root Directory.
  • Konfigurasi Docker Engine.

Informasi tersebut berguna ketika melakukan troubleshooting pada server.

20 Perintah Docker yang Wajib Dikuasai

Untuk memudahkan pembelajaran, 20 perintah berikut dibagi menjadi empat kategori utama.

A. Manajemen Container Docker

1. docker ps — Melihat Container yang Sedang Berjalan

Perintah:

docker ps

Fungsi:

Menampilkan daftar container yang sedang berjalan.

Informasi yang ditampilkan meliputi Container ID, Image, Command, Created, Status, Ports, dan Names.

Contoh:

docker ps

Contoh output:

CONTAINER ID   IMAGE     STATUS       PORTS
a1b2c3d4e5f6   nginx     Up 2 hours   0.0.0.0:8080->80/tcp

Perintah ini sangat sering digunakan ketika administrator ingin memastikan aplikasi masih berjalan.

Tips:

Untuk menampilkan hanya ID container:

docker ps -q

Output tersebut dapat digunakan sebagai input untuk skrip otomatisasi.

2. docker ps -a — Melihat Semua Container

Perintah:

docker ps -a

Berbeda dengan docker ps, perintah ini menampilkan seluruh container, termasuk container yang sudah berhenti.

Contoh status container yang dapat ditemukan:

  • Up: Container sedang berjalan.
  • Exited: Proses utama container telah berhenti.
  • Created: Container telah dibuat tetapi belum dijalankan.
  • Restarting: Container sedang dalam proses restart.
  • Paused: Proses container sedang dijeda.

Contoh penggunaan:

docker ps -a

Perintah ini sangat membantu ketika container tidak muncul pada daftar docker ps.

3. docker run — Menjalankan Container Baru

Perintah:

docker run

Digunakan untuk membuat dan menjalankan container dari Docker Image.

Contoh:

docker run -d \
  --name web-nginx \
  -p 8080:80 \
  nginx:stable

Penjelasan:

  • -d: Menjalankan container dalam background.
  • --name web-nginx: Memberikan nama container.
  • -p 8080:80: Memetakan port 8080 pada host ke port 80 container.
  • nginx:stable: Image yang digunakan.

Setelah container berjalan, akses:

http://IP-SERVER:8080

Jika port dapat diakses melalui firewall dan jaringan, halaman default Nginx akan ditampilkan.

Untuk pengujian lokal yang tidak perlu dibuka ke jaringan, lebih aman menggunakan:

docker run -d \
  --name web-nginx-local \
  -p 127.0.0.1:8081:80 \
  nginx:stable

Dengan konfigurasi tersebut, port hanya dipublikasikan pada loopback host.

4. docker start — Menjalankan Container yang Berhenti

Perintah:

docker start web-nginx

Digunakan untuk menjalankan kembali container yang sebelumnya berhenti.

Perlu dipahami bahwa docker start tidak membuat container baru.

Perintah tersebut menjalankan kembali container yang sudah ada beserta konfigurasi yang telah dibuat sebelumnya.

Contoh:

docker ps -a
docker start web-nginx
docker ps

5. docker stop — Menghentikan Container

Perintah:

docker stop web-nginx

Digunakan untuk menghentikan container yang sedang berjalan.

Secara default, Docker mengirimkan sinyal penghentian kepada proses utama container, memberikan waktu untuk berhenti secara normal, kemudian melakukan penghentian paksa jika batas waktu terlampaui.

Contoh:

docker stop web-nginx

Untuk memberikan waktu penghentian hingga 30 detik:

docker stop -t 30 web-nginx

Praktik ini berguna untuk aplikasi yang memerlukan waktu menyelesaikan proses sebelum berhenti.

B. Informasi, Monitoring, dan Troubleshooting

6. docker logs — Melihat Log Container

Perintah:

docker logs web-nginx

Menampilkan log yang dikumpulkan oleh logging driver Docker untuk container tersebut.

Log sangat penting untuk mengetahui penyebab aplikasi mengalami error.

Contoh:

docker logs --tail 100 web-nginx

Menampilkan 100 baris log terakhir.

Untuk memantau log secara real-time:

docker logs -f web-nginx

Untuk menampilkan timestamp:

docker logs -f --timestamps web-nginx

Tips Sysadmin:

Ketika aplikasi mengalami HTTP 500, restart berulang, atau gagal terhubung ke database, pemeriksaan log container sebaiknya menjadi salah satu langkah awal troubleshooting.

Perlu diketahui bahwa ketersediaan log melalui docker logs bergantung pada logging driver yang digunakan.

7. docker exec -it — Menjalankan Perintah di Dalam Container

Perintah:

docker exec -it web-nginx sh

Digunakan untuk menjalankan perintah dalam container yang sedang berjalan.

Parameter:

  • -i: Menjaga standard input tetap terbuka.
  • -t: Mengalokasikan pseudo-terminal.

Jika image memiliki Bash:

docker exec -it web-nginx bash

Namun, tidak semua Docker Image menyediakan Bash. Image minimal sering hanya menyediakan sh, bahkan sebagian tidak menyediakan shell sama sekali.

Contoh pemeriksaan konfigurasi Nginx:

docker exec web-nginx nginx -t

Perintah ini berguna untuk memvalidasi konfigurasi Nginx tanpa perlu membuka shell interaktif.

Best Practice:

Hindari melakukan perubahan manual permanen di dalam container produksi. Perubahan konfigurasi sebaiknya dilakukan melalui Dockerfile, volume, atau mekanisme deployment yang terkontrol.

8. docker inspect — Melihat Detail Konfigurasi Container

Perintah:

docker inspect web-nginx

Menampilkan informasi detail dalam format JSON.

Informasi yang dapat diperiksa meliputi:

  • IP Address.
  • Network Settings.
  • Mount Points.
  • Environment Variables.
  • Restart Policy.
  • Status Container.
  • Konfigurasi Port.

Untuk melihat alamat IP container pada network tertentu:

docker inspect -f \
'{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' \
web-nginx

Perintah ini berguna saat troubleshooting konektivitas antarkontainer.

Perhatikan bahwa docker inspect dapat menampilkan environment variable yang berisi informasi sensitif. Jangan membagikan output lengkap tanpa melakukan pemeriksaan dan penyamaran data rahasia.

9. docker stats — Monitoring Resource Container

Perintah:

docker stats

Menampilkan penggunaan resource container secara langsung.

Metrik yang ditampilkan antara lain:

  • CPU Usage.
  • Memory Usage.
  • Network I/O.
  • Block I/O.
  • PIDs.

Contoh:

docker stats web-nginx

Untuk mengambil satu snapshot:

docker stats --no-stream

Perintah ini sangat berguna ketika aplikasi terasa lambat atau penggunaan CPU server meningkat.

Namun, docker stats bukan pengganti sistem monitoring jangka panjang seperti Prometheus dan Grafana.

10. docker top — Melihat Proses di Dalam Container

Perintah:

docker top web-nginx

Digunakan untuk menampilkan proses yang sedang berjalan di dalam container.

Informasi ini membantu administrator mengidentifikasi proses utama dan proses tambahan yang aktif.

Contohnya, pada container Nginx, Anda dapat melihat proses master dan worker Nginx.

Perintah ini dapat digunakan ketika melakukan investigasi penggunaan resource atau memastikan proses aplikasi berjalan sebagaimana mestinya.

C. Manajemen Docker Image

11. docker images — Melihat Daftar Image

Perintah:

docker images

Menampilkan daftar Docker Image yang tersimpan secara lokal.

Informasi yang ditampilkan mencakup repository, tag, image ID, dan ukuran image.

Contoh:

docker images

Gunakan perintah ini untuk mengetahui image apa saja yang tersedia pada server.

12. docker pull — Mengunduh Docker Image

Perintah:

docker pull nginx:stable

Digunakan untuk mengambil Docker Image dari registry.

Jika registry tidak disebutkan, Docker biasanya menggunakan Docker Hub sebagai default.

Contoh lainnya:

docker pull redis:7
docker pull postgres:16

Best Practice:

Untuk lingkungan produksi, gunakan versi image yang telah diuji dan pertimbangkan pinning berdasarkan digest agar deployment lebih konsisten.

Menggunakan tag latest tanpa pengendalian versi dapat menimbulkan perubahan yang tidak diharapkan ketika image diperbarui.

13. docker build — Membangun Docker Image

Perintah:

docker build -t aplikasi-web:1.0 .

Digunakan untuk membangun Docker Image berdasarkan instruksi dalam Dockerfile.

Contoh Dockerfile sederhana:

FROM nginx:stable-alpine

COPY index.html /usr/share/nginx/html/

Simpan file tersebut dengan nama Dockerfile.

Kemudian jalankan:

docker build -t aplikasi-web:1.0 .

Penjelasan:

  • -t: Memberikan nama dan tag image.
  • aplikasi-web:1.0: Nama dan versi image.
  • .: Build context dari direktori saat ini.

Untuk menjalankan hasil build:

docker run -d \
  --name aplikasi-web \
  -p 8082:80 \
  aplikasi-web:1.0

Image hasil build dapat digunakan untuk membuat container baru tanpa perlu mengulang proses instalasi aplikasi secara manual.

14. docker rmi — Menghapus Docker Image

Perintah:

docker rmi aplikasi-web:1.0

Digunakan untuk menghapus image dari penyimpanan lokal.

Perlu diperhatikan bahwa image yang masih digunakan oleh container dapat gagal dihapus.

Sebelum menghapus image, periksa container yang menggunakannya.

docker ps -a

Untuk membersihkan image yang tidak digunakan:

docker image prune

Jangan menggunakan opsi penghapusan paksa tanpa memahami dependensi image terhadap container yang ada.

15. docker tag — Memberikan Tag pada Image

Perintah:

docker tag aplikasi-web:1.0 \
  username/aplikasi-web:1.0

Digunakan untuk memberikan referensi nama atau tag baru kepada Docker Image.

Perintah ini tidak membuat salinan seluruh layer image.

Contoh penggunaannya adalah menyiapkan image untuk dikirim ke container registry.

docker tag aplikasi-web:1.0 \
  registry.example.com/aplikasi-web:1.0

Setelah login ke registry yang sesuai, image dapat dikirim menggunakan:

docker push registry.example.com/aplikasi-web:1.0

Penggunaan tag yang konsisten membantu proses versioning dan deployment.

D. Docker Compose untuk Aplikasi Multi-Container

Docker Compose digunakan untuk mendefinisikan dan menjalankan beberapa layanan dalam satu aplikasi melalui file konfigurasi YAML.

Sebagai contoh, aplikasi WordPress dapat terdiri atas container WordPress dan database MariaDB yang dikelola sebagai satu project Compose.

16. docker compose up -d — Menjalankan Semua Service

Perintah:

docker compose up -d

Digunakan untuk membuat dan menjalankan service yang didefinisikan dalam file Compose.

Parameter -d menjalankan service dalam mode detached.

Docker Compose akan membuat network dan resource lain yang diperlukan berdasarkan konfigurasi.

Jika konfigurasi service atau image berubah, Compose dapat membuat ulang container untuk menerapkan perubahan.

17. docker compose down — Menghentikan Project Compose

Perintah:

docker compose down

Digunakan untuk menghentikan dan menghapus container serta network yang dibuat oleh project Compose.

Secara default, named volume tidak dihapus oleh perintah tersebut.

Namun, gunakan dengan hati-hati karena container akan dihentikan dan koneksi aplikasi terputus.

Perintah berikut berisiko menghapus data persisten pada named volume project:

docker compose down -v

Jangan menjalankan opsi -v pada server produksi tanpa memastikan data penting telah dicadangkan.

18. docker compose logs -f — Monitoring Log Semua Service

Perintah:

docker compose logs -f

Menampilkan log dari service dalam project Compose secara real-time.

Untuk melihat log satu service:

docker compose logs -f web

Untuk membatasi output:

docker compose logs --tail 100

Perintah ini berguna ketika aplikasi terdiri atas beberapa service yang saling berkomunikasi.

19. docker compose ps — Memeriksa Status Service

Perintah:

docker compose ps

Menampilkan container yang menjadi bagian dari project Compose beserta status dan informasi port.

Contoh:

docker compose ps

Untuk menampilkan seluruh container project, termasuk yang berhenti:

docker compose ps -a

Perintah ini membantu administrator memeriksa service mana yang sedang berjalan dan service mana yang gagal.

20. docker compose build — Membangun Image Service

Perintah:

docker compose build

Digunakan untuk membangun image bagi service yang memiliki konfigurasi build pada file Compose.

Contoh:

services:
  web:
    build: .
    ports:
      - "8080:80"

Kemudian jalankan:

docker compose build

Setelah image selesai dibangun:

docker compose up -d

Untuk membangun dan menjalankan service dalam satu perintah:

docker compose up -d --build

Perintah ini sering digunakan dalam pengembangan aplikasi dan deployment berbasis Docker Compose.

Ringkasan Docker Command Cheat Sheet

Berikut ringkasan 20 perintah yang dapat disimpan sebagai referensi cepat.

No.PerintahFungsi
1docker psContainer aktif
2docker ps -aSemua container
3docker runMembuat dan menjalankan container
4docker startMenjalankan container berhenti
5docker stopMenghentikan container
6docker logsMelihat log container
7docker exec -itMenjalankan perintah dalam container
8docker inspectInformasi konfigurasi
9docker statsMonitoring resource
10docker topMelihat proses container
11docker imagesDaftar image lokal
12docker pullMengunduh image
13docker buildMembangun image
14docker rmiMenghapus image
15docker tagMemberikan tag image
16docker compose up -dMenjalankan project
17docker compose downMenghentikan project
18docker compose logs -fMonitoring log project
19docker compose psStatus service
20docker compose buildBuild image service

Tutorial Praktis: Deployment Nginx Menggunakan Docker Compose

Setelah memahami perintah dasar, kita akan mencoba implementasi sederhana menggunakan Nginx.

Tujuan praktikum ini adalah menjalankan web server Nginx dalam container, menampilkan halaman HTML, memeriksa log, dan melakukan monitoring.

Langkah 1 — Membuat Direktori Project

mkdir -p ~/docker-lab-nginx/html
cd ~/docker-lab-nginx

Direktori tersebut digunakan untuk menyimpan konfigurasi Compose dan file website.

Langkah 2 — Membuat Halaman HTML

Buat file:

nano html/index.html

Masukkan kode berikut:

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Docker Lab Nginx</title>
</head>
<body>
    <h1>Docker Nginx Berhasil!</h1>
    <p>Web server berjalan menggunakan Docker Compose.</p>
</body>
</html>

Simpan file tersebut.

Langkah 3 — Membuat File compose.yaml

Buat file:

nano compose.yaml

Masukkan konfigurasi:

services:
  web:
    image: nginx:stable-alpine
    container_name: lab-nginx
    ports:
      - "127.0.0.1:8080:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    restart: unless-stopped

Penjelasan konfigurasi:

  • image: Menentukan Docker Image.
  • container_name: Nama container.
  • ports: Memetakan port 8080 pada loopback host ke port 80 container.
  • volumes: Memasang direktori HTML dari host ke container.
  • :ro: Membuat mount menjadi read-only di dalam container.
  • restart: Mengatur kebijakan restart container.

Konfigurasi ini cocok untuk pengujian lokal karena port 8080 tidak dibuka langsung ke jaringan eksternal.

Jika server harus diakses dari komputer lain dalam laboratorium, pengaturan binding port dapat disesuaikan dengan alamat IP server, disertai pengamanan firewall.

Langkah 4 — Memvalidasi File Compose

Jalankan:

docker compose config

Perintah ini memvalidasi dan menampilkan konfigurasi Compose yang telah diproses.

Jika terjadi kesalahan indentasi YAML, Docker Compose biasanya akan menampilkan pesan error.

Langkah 5 — Menjalankan Container

docker compose up -d

Docker akan mengambil image Nginx jika belum tersedia secara lokal, kemudian membuat dan menjalankan container.

Langkah 6 — Memeriksa Status Container

docker compose ps

Pastikan service web memiliki status berjalan.

Langkah 7 — Menguji Web Server

Dari host server:

curl http://127.0.0.1:8080

Jika berhasil, respons akan berisi halaman HTML yang telah dibuat.

Untuk pengujian dari komputer lain, gunakan konfigurasi binding port yang sesuai dan pastikan akses jaringan telah diizinkan.

Langkah 8 — Memantau Log

docker compose logs -f web

Buka halaman website beberapa kali, kemudian perhatikan log permintaan HTTP yang muncul.

Tekan Ctrl+C untuk menghentikan tampilan log. Tindakan ini tidak menghentikan container.

Langkah 9 — Memantau Resource

docker stats lab-nginx

Perhatikan penggunaan CPU, memory, dan network I/O.

Lakukan beberapa permintaan HTTP dan amati perubahan metrik.

Langkah 10 — Menghentikan Project

docker compose down

Perintah ini menghentikan dan menghapus container project.

Direktori html yang berada pada host tetap tersedia karena menggunakan bind mount.

Studi Kasus: Troubleshooting Container yang Tidak Bisa Diakses

Misalnya, sebuah aplikasi web dalam container Docker tidak dapat diakses melalui browser.

Masalah tersebut dapat disebabkan oleh beberapa faktor:

  • Container tidak berjalan.
  • Aplikasi gagal startup.
  • Port tidak dipublikasikan dengan benar.
  • Firewall memblokir koneksi.
  • Aplikasi hanya mendengarkan pada alamat loopback di dalam container.
  • Network Docker mengalami masalah.
  • Konfigurasi aplikasi salah.

Lakukan pemeriksaan secara bertahap.

Tahap 1 — Memeriksa Container

docker ps -a

Jika status container Exited, berarti proses utama telah berhenti.

Tahap 2 — Memeriksa Log

docker logs --tail 100 lab-nginx

Periksa apakah terdapat pesan error konfigurasi atau kegagalan startup.

Tahap 3 — Memeriksa Port

docker port lab-nginx

Perintah ini menunjukkan pemetaan port container ke host.

Periksa apakah port sesuai dengan konfigurasi yang diharapkan.

Tahap 4 — Memeriksa Konfigurasi

docker inspect lab-nginx

Perhatikan network, mount, environment variable, dan port binding.

Tahap 5 — Menguji Aplikasi dari Dalam Container

Untuk Nginx:

docker exec lab-nginx nginx -t

Perintah tersebut memvalidasi konfigurasi Nginx.

Jika perlu, uji layanan HTTP dari host menggunakan curl.

Tahap 6 — Memeriksa Firewall

Pada Ubuntu yang menggunakan UFW:

sudo ufw status

Periksa kebijakan firewall host dan firewall eksternal.

Perlu diperhatikan bahwa port yang dipublikasikan Docker dapat memiliki perilaku berbeda terhadap aturan UFW karena mekanisme NAT dan firewall Docker. Jangan mengandalkan UFW saja untuk membatasi akses ke port Docker yang dipublikasikan.

Gunakan binding alamat IP yang eksplisit dan kebijakan firewall yang sesuai dengan arsitektur server.

Kesalahan yang Sering Terjadi Saat Menggunakan Docker

1. Menggunakan docker run Berulang Kali

Kesalahan:

Menjalankan docker run berkali-kali dengan nama atau port yang sama.

Dampak:

Muncul konflik nama container atau port yang sudah digunakan.

Solusi:

Gunakan docker start untuk menjalankan kembali container yang sudah ada, atau kelola aplikasi menggunakan Docker Compose.

2. Tidak Menggunakan Volume untuk Data Penting

Kesalahan:

Menyimpan database hanya pada writable layer container.

Dampak:

Data dapat hilang ketika container dihapus dan dibuat ulang tanpa mekanisme persistensi.

Solusi:

Gunakan named volume atau bind mount sesuai kebutuhan aplikasi.

Contoh:

docker volume create data-aplikasi

Volume membantu menjaga persistensi data, tetapi bukan pengganti backup.

3. Menggunakan Image latest Tanpa Pengujian

Kesalahan:

Menggunakan image dengan tag latest untuk seluruh deployment produksi.

Dampak:

Perubahan versi image dapat menyebabkan ketidakcocokan konfigurasi atau aplikasi.

Solusi:

Gunakan versi yang telah diuji dan terapkan proses pembaruan terkontrol.

4. Tidak Membatasi Penggunaan Resource

Kesalahan:

Menjalankan container tanpa mempertimbangkan konsumsi CPU dan memori.

Dampak:

Satu container yang bermasalah dapat menghabiskan resource host dan mengganggu aplikasi lainnya.

Solusi:

Terapkan pembatasan resource yang sesuai dengan kebutuhan aplikasi.

Contoh:

docker run -d \
  --name nginx-limited \
  --memory="512m" \
  --cpus="1.0" \
  -p 127.0.0.1:8083:80 \
  nginx:stable

Parameter tersebut membatasi memori hingga 512 MiB dan kuota CPU setara satu core.

5. Menghapus Volume Tanpa Backup

Kesalahan:

Menjalankan:

docker compose down -v

tanpa memahami dampaknya.

Dampak:

Named volume yang terkait dengan project dapat terhapus, termasuk data aplikasi atau database.

Solusi:

Lakukan backup, verifikasi isi volume, dan gunakan perintah penghapusan hanya setelah memahami resource yang terdampak.

6. Mengabaikan Keamanan Docker

Kesalahan:

Menjalankan semua container dengan hak akses berlebihan atau membuka port tanpa pembatasan.

Dampak:

Meningkatkan risiko kompromi layanan dan host.

Solusi:

  • Hindari container privileged jika tidak diperlukan.
  • Gunakan user non-root jika aplikasi mendukung.
  • Batasi Linux capabilities.
  • Hindari memasang Docker socket ke container yang tidak dipercaya.
  • Perbarui image dan Docker Engine.
  • Gunakan secrets management untuk data sensitif.
  • Batasi port yang dipublikasikan.
  • Terapkan monitoring dan audit berkala.

Keanggotaan pada grup docker juga perlu dibatasi karena secara praktis memberikan kemampuan administratif yang sangat tinggi pada host Docker.

Tips Profesional Mengelola Docker di Server Produksi

Gunakan Docker Compose untuk Aplikasi Multi-Service

Docker Compose membantu menjaga konfigurasi aplikasi dalam satu file deklaratif.

Dengan Compose, administrator dapat mengelola network, volume, environment variable, dan service secara konsisten.

Simpan file konfigurasi dalam version control, tetapi jangan memasukkan password atau secrets ke repository.

Terapkan Healthcheck

Status container Up tidak selalu berarti aplikasi siap menerima permintaan.

Gunakan Docker Healthcheck untuk memeriksa kondisi aplikasi.

Contoh pada Dockerfile:

HEALTHCHECK --interval=30s --timeout=3s \
  CMD curl -fsS http://127.0.0.1/ || exit 1

Contoh ini membutuhkan curl tersedia dalam image. Untuk image minimal, gunakan metode pemeriksaan yang sesuai dengan utilitas yang benar-benar terpasang.

Healthcheck membantu mendeteksi aplikasi yang tidak sehat, tetapi tidak otomatis menjamin container akan direstart hanya karena statusnya unhealthy.

Gunakan Restart Policy

Contoh:

restart: unless-stopped

Kebijakan ini membantu Docker menjalankan kembali container setelah kegagalan proses atau restart daemon sesuai aturan restart policy.

Namun, restart policy bukan solusi untuk bug aplikasi atau masalah dependensi.

Terapkan Logging yang Terkontrol

Log aplikasi dapat menghabiskan ruang penyimpanan jika tidak dibatasi.

Pada lingkungan yang menggunakan logging driver json-file, contoh konfigurasi rotasi log adalah:

logging:
  driver: json-file
  options:
    max-size: "10m"
    max-file: "3"

Konfigurasi tersebut membatasi ukuran file log dan jumlah file rotasi per container.

Untuk server produksi dengan banyak container, pertimbangkan sentralisasi log menggunakan Grafana Loki, Fluent Bit, atau platform logging lain.

Gunakan Monitoring Terpusat

Perintah docker stats cocok untuk pemeriksaan cepat, tetapi tidak menyediakan analisis historis yang memadai.

Untuk monitoring jangka panjang, gunakan kombinasi:

  • Prometheus untuk pengumpulan metrik.
  • cAdvisor untuk metrik container.
  • Grafana untuk dashboard.
  • Loki untuk agregasi log.
  • Alertmanager untuk notifikasi.

Dengan pendekatan tersebut, administrator dapat memantau tren penggunaan CPU, memori, storage, dan aktivitas aplikasi.

Lakukan Backup Secara Berkala

Backup harus mencakup data persisten dan konfigurasi aplikasi.

Untuk database, gunakan mekanisme backup yang konsisten dengan database engine, seperti logical dump atau backup fisik yang sesuai.

Jangan hanya mengandalkan penyalinan volume database yang sedang aktif tanpa memastikan konsistensi data.

Bersihkan Resource yang Tidak Digunakan

Untuk melihat penggunaan storage Docker:

docker system df

Untuk membersihkan resource yang tidak digunakan:

docker system prune

Perintah tersebut dapat menghapus stopped container, unused network, dangling image, dan build cache yang tidak digunakan.

Periksa dampaknya sebelum menjalankan pada server produksi.

Hindari penggunaan opsi --volumes tanpa audit dan backup.

Penerapan Docker dalam Pembelajaran TKJ dan DevOps

Docker juga sangat relevan digunakan sebagai media pembelajaran praktik pada kompetensi Teknik Jaringan Komputer dan Telekomunikasi (TJKT).

Melalui Docker, peserta didik dapat mempelajari deployment aplikasi tanpa harus membuat mesin virtual terpisah untuk setiap layanan.

Contoh proyek praktikum yang dapat dikembangkan meliputi:

  1. Menjalankan web server Nginx dan Apache menggunakan container berbeda.
  2. Menghubungkan aplikasi PHP dengan database MariaDB.
  3. Membangun aplikasi WordPress menggunakan Docker Compose.
  4. Mempelajari Docker Network untuk komunikasi antarkontainer.
  5. Mengimplementasikan volume untuk penyimpanan data.
  6. Melakukan troubleshooting aplikasi melalui Docker Logs.
  7. Membangun monitoring container menggunakan Prometheus dan Grafana.

Pendekatan Project Based Learning dapat diterapkan dengan memberikan tugas kepada peserta didik untuk membangun aplikasi multi-container, mendokumentasikan konfigurasi, dan melakukan troubleshooting berdasarkan skenario masalah.

Dengan demikian, peserta didik tidak hanya menghafal perintah Docker, tetapi juga memahami konsep deployment, jaringan, storage, keamanan, dan monitoring aplikasi modern.

Kesimpulan

Menguasai perintah Docker merupakan keterampilan penting bagi System Administrator, Linux Administrator, DevOps Engineer, dan siapa saja yang bekerja dengan infrastruktur aplikasi modern.

Dari 20 perintah yang telah dibahas, terdapat empat kemampuan utama yang perlu dikuasai: mengelola siklus hidup container, melakukan monitoring dan troubleshooting, membangun serta mengelola image, dan menjalankan aplikasi multi-container menggunakan Docker Compose.

Untuk pemula, mulailah dengan memahami docker ps, docker run, docker logs, dan docker exec.

Setelah itu, lanjutkan dengan Docker Image, Docker Network, Docker Volume, dan Docker Compose.

Bagi administrator server produksi, kemampuan menjalankan container harus dilengkapi dengan pemahaman keamanan, backup, monitoring, resource management, dan strategi deployment.

Docker bukan sekadar alat untuk menjalankan aplikasi dalam container. Docker merupakan bagian penting dari ekosistem pengembangan dan pengelolaan infrastruktur modern.

Frequently Asked Questions (FAQ)

1. Apa itu Docker Command?

Docker Command adalah perintah yang digunakan melalui terminal untuk mengelola Docker Engine, container, image, network, volume, dan berbagai resource Docker lainnya.

2. Apa perbedaan docker ps dan docker ps -a?

docker ps menampilkan container yang sedang berjalan, sedangkan docker ps -a menampilkan seluruh container, termasuk yang sudah berhenti.

3. Apa fungsi docker exec -it?

Perintah docker exec -it digunakan untuk menjalankan perintah secara interaktif di dalam container yang sedang berjalan, misalnya membuka shell untuk troubleshooting.

4. Apa perbedaan docker run dan docker start?

docker run membuat dan menjalankan container baru dari image, sedangkan docker start menjalankan kembali container yang sudah dibuat sebelumnya.

5. Apa fungsi Docker Compose?

Docker Compose digunakan untuk mendefinisikan dan mengelola aplikasi yang terdiri atas satu atau beberapa service melalui file konfigurasi YAML.

6. Apakah docker compose down menghapus data?

Secara default, docker compose down tidak menghapus named volume. Namun, data yang hanya tersimpan pada writable layer container dapat hilang ketika container dihapus. Opsi -v juga dapat menghapus named volume project.

7. Bagaimana cara melihat log container Docker?

Gunakan docker logs nama-container. Untuk memantau log secara real-time, gunakan docker logs -f nama-container.

8. Bagaimana cara mengetahui penggunaan CPU dan RAM container?

Gunakan docker stats untuk melihat penggunaan CPU, memori, dan I/O container secara langsung.

9. Apakah Docker cocok untuk server produksi?

Ya. Docker dapat digunakan pada server produksi apabila dilengkapi konfigurasi keamanan, monitoring, backup, resource limits, dan strategi deployment yang tepat.

10. Apakah Docker dapat digunakan untuk pembelajaran TKJ?

Ya. Docker sangat cocok untuk praktikum web server, database server, jaringan container, deployment aplikasi, dan pembelajaran dasar DevOps.

Sudah Siap Menguasai Docker?

Menguasai Docker bukan hanya tentang menghafal perintah terminal, tetapi memahami bagaimana aplikasi dijalankan, dipantau, diamankan, dan dikelola secara efisien.

Mulailah dengan mencoba 20 perintah Docker dalam artikel ini pada lingkungan laboratorium. Setelah memahami dasarnya, lanjutkan dengan membangun aplikasi multi-container menggunakan Docker Compose.

💬 Punya pengalaman menarik atau kendala saat menggunakan Docker? Bagikan pertanyaan dan pengalaman Anda melalui kolom komentar.

📢 Jangan lupa membagikan artikel ini kepada teman, siswa TKJ/TJKT, Linux Administrator, dan praktisi DevOps yang sedang mempelajari containerization.

📚 Jelajahi juga artikel lainnya tentang Linux Server, Docker, Kubernetes, Proxmox, Networking, Cloud Computing, dan Cybersecurity.

Ikuti konten teknologi dan tutorial terbaru melalui:

Instagram: @walidumar01

YouTube: https://youtube.com/walidumar

Terus belajar, terus bereksperimen, dan tingkatkan keterampilan administrasi server Anda!

Referensi teknis resmi untuk pembaca: Docker CLI Reference dan Docker Compose Documentation.

Dukung kami dengan Subscribe & Join Membership channel YouTube | Walid Umar

Akses video pembelajaran eksklusif, materi persiapan UKK (Uji Kompetensi Siswa) dan Penyelesaian Soal LKS ITNSA

Tinggalkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Dilindungi Oleh
Shield Security