# Cara Melihat Docker Logs: Tail, Follow, dan Compose

> Cara melihat docker logs untuk pemula: tail, follow, since, timestamps, docker compose logs, membaca container yang terus restart, dan rotasi max-size.

URL: https://www.matthewswong.com/id/blog/cara-melihat-docker-logs-untuk-pemula/

- Author: Matthews Wong (https://www.matthewswong.com/id/about/)
- Published: 2026-10-17
- Updated: 2026-10-17
- Category: DevOps

> **Key takeaway:** Cara melihat docker logs: jalankan docker logs --tail 50 nama-container untuk 50 baris terakhir, tambahkan -f untuk mengikuti log langsung dan --since 10m untuk membatasi waktu. Untuk proyek Compose pakai docker compose logs web. Kalau container terus restart, baca log container itu dulu, dan batasi ukuran log dengan max-size dan max-file.

Container kamu sudah jalan, tetapi halaman tidak terbuka, atau status container berubah jadi Restarting terus-menerus. Kamu mengetik docker logs nama-container dan terminal langsung dibanjiri ribuan baris yang bergulir terlalu cepat untuk dibaca. Pemula biasanya tersangkut di tiga titik: tidak tahu nama container yang benar, tidak tahu cara membatasi output, dan tidak tahu bahwa container yang sudah mati pun masih bisa dibaca lognya.

Panduan ini membawamu lewat tujuh langkah, dari mencari nama container sampai membatasi ukuran log supaya disk tidak penuh. Setiap perintah dan flag saya cocokkan dengan dokumentasi resmi Docker, dan contoh memakai nama placeholder web untuk container dan layanan. Pola terakhir di panduan ini sama dengan yang dipakai file docker-compose.yml situs ini: driver json-file dengan max-size 10m dan max-file 3.

Ingin paham dulu ke mana baris log pergi dan siapa yang menyimpannya? Ikuti pelajaran gratis

Docker Logs untuk Pemula: Baca, Batasi, dan Rotasi Log

 di jalur DevOps from zero, lengkap dengan penjelasan interaktif.

## Yang kamu butuhkan

Tidak banyak, cukup tiga hal berikut sudah siap sebelum mulai.

Docker terpasang di komputer atau server, dan kamu bisa menjalankan perintah docker di terminal.

Minimal satu container yang sedang atau pernah berjalan. Contoh di bawah memakai nama web, ganti dengan namamu sendiri.

Untuk langkah 5, sebuah proyek Docker Compose dengan layanan bernama web. Kalau belum punya, langkah lain tetap bisa diikuti.

## Langkah 1: Cari nama container yang benar

Semua perintah log butuh nama atau ID container. Jalankan docker ps dengan -a, karena tanpa -a Docker hanya menampilkan container yang sedang berjalan dan container yang sudah mati tidak kelihatan.

Lihat kolom STATUS. Up berarti sehat, Restarting berarti Docker sedang menjalankannya ulang karena kebijakan restart, dan Exited diikuti angka berarti prosesnya sudah selesai atau mati dengan kode tersebut. Salin isi kolom NAMES untuk langkah berikutnya.

## Langkah 2: Baca log dengan docker logs dan --tail

Perintah dasarnya docker logs nama-container, dan secara default ia menampilkan semua baris dari awal. Untuk container yang sudah lama jalan itu terlalu banyak. Tambahkan --tail atau -n untuk hanya melihat sejumlah baris terakhir.

Docker menangkap standard output dan standard error dari proses utama container, jadi yang kamu lihat adalah apa yang dicetak aplikasi. Kalau aplikasi menulis ke file lognya sendiri, docker logs bisa tampak kosong. Arahkan aplikasi untuk mencetak ke stdout dan stderr.

## Langkah 3: Ikuti log secara langsung dengan -f

Saat kamu sedang menguji sesuatu, misalnya membuka halaman lalu melihat error yang muncul, pakai --follow atau -f. Docker terus mengalirkan baris baru ke terminal. Gabungkan dengan --tail supaya kamu mulai dari konteks terakhir, bukan dari seluruh riwayat.

Ctrl+C hanya menghentikan tampilan di terminalmu. Container tetap berjalan. Ini kebingungan yang sering muncul pada pemula: mereka takut menekan Ctrl+C karena mengira aplikasinya ikut mati.

## Langkah 4: Persempit dengan --since dan --timestamps

Kalau masalah terjadi beberapa menit lalu, --since menampilkan hanya baris yang lebih baru dari waktu tertentu. Nilainya bisa durasi seperti 10m atau 3h, tanggal RFC 3339, atau UNIX timestamp. --until adalah pasangannya untuk batas akhir, dan --timestamps menambahkan waktu di depan setiap baris.

Kalau kamu tidak menulis zona waktu di nilai absolut, klien memakai zona waktu lokal komputermu. Tambahkan Z di akhir bila kamu ingin UTC, terutama saat membandingkan dengan log dari server yang zonanya berbeda.

## Langkah 5: Pakai docker compose logs untuk proyek Compose

Kalau container dibuat lewat Docker Compose, gunakan docker compose logs. Perintah ini menerima nama layanan, yaitu nama di file compose, bukan container_name. Tanpa nama layanan, ia menampilkan log semua layanan sekaligus dengan awalan nama layanan di setiap baris.

Flag-nya mirip: --follow, --tail, --since, --until, dan --timestamps, ditambah --no-log-prefix untuk membuang awalan. Perhatikan bahwa --tail berlaku per container, dan nilai defaultnya adalah semua baris, jadi biasakan menulisnya.

## Langkah 6: Baca container yang terus restart

Container yang crash lalu dijalankan ulang oleh kebijakan restart adalah kasus paling umum yang membuat pemula panik. Di docker ps -a statusnya berganti antara Restarting dan Exited. Tenang: log percobaan sebelumnya masih ada, dan di sanalah penyebabnya tertulis. Jalankan tiga perintah di bawah, berurutan.

Cari error pertama dalam satu percobaan, bukan baris terakhir. Baris terakhir biasanya hanya akibat, misalnya proses keluar karena konfigurasi yang hilang. Dokumentasi Docker juga menjelaskan bahwa kebijakan restart baru berlaku setelah container berjalan setidaknya 10 detik, supaya container yang tidak pernah bisa start tidak masuk loop restart.

> Jangan menghapus container yang crash (docker rm) sebelum membaca lognya. Log json-file disimpan per container, jadi menghapus container berarti kehilangan bukti yang kamu cari. Baca dan salin dulu bagian yang penting.

## Langkah 7: Cek driver dan batasi ukuran log

Docker memakai driver json-file secara default, dan driver ini tidak merotasi log kecuali kamu mengaturnya. Di server yang berjalan berbulan-bulan, satu file log yang terus membesar bisa memenuhi disk. Periksa driver sebuah container dengan docker inspect, lalu batasi lewat blok logging di file compose. Nilai max-size dan max-file harus berupa string, jadi ditulis dengan tanda kutip.

Dengan max-size 10m dan max-file 3, Docker menyimpan paling banyak tiga file sekitar 10 MB, dan yang tertua dihapus saat file baru dibuat. Pengaturan ini hanya berlaku untuk container yang dibuat sesudahnya. Container yang sudah ada mempertahankan opsi lamanya, jadi buat ulang container-nya dengan docker compose up -d --force-recreate.

## Error umum dan cara memperbaikinya

Enam gejala yang paling sering membuat pemula bingung saat membaca log container.

| Gejala | Penyebab | Perbaikan |
| --- | --- | --- |
| docker logs tidak menampilkan apa-apa padahal container jalan | Aplikasi menulis ke file lognya sendiri, bukan ke stdout dan stderr. | Arahkan aplikasi ke stdout dan stderr, atau kaitkan file lognya ke keduanya seperti image nginx resmi. |
| Terminal banjir ribuan baris | --tail tidak diisi, defaultnya semua baris. | Tambahkan --tail 50, atau --since 10m untuk membatasi waktu. |
| No such container saat menjalankan docker logs | Nama salah, atau container sudah dihapus. Tanpa -a pada docker ps, container yang mati tidak terlihat. | Cek nama dengan docker ps -a. Kalau memakai Compose, container_name bisa berbeda dari nama layanan. |
| docker compose logs web gagal menemukan layanan | Argumen yang diminta adalah nama layanan di file compose, bukan nama container. | Pakai nama layanan persis seperti di file compose, atau jalankan docker compose logs tanpa argumen. |
| Log lama hilang setelah beberapa hari | Rotasi max-size dan max-file membuang file yang tertua. | Naikkan max-file atau max-size kalau perlu riwayat lebih lama. Untuk log yang harus awet, simpan di tempat yang memang dibuat untuk itu. |
| Sudah mengubah daemon.json tetapi container lama tetap tidak dirotasi | Default baru hanya berlaku untuk container yang dibuat setelah Docker di-restart. Atau max-file diisi tanpa max-size. | Buat ulang container, isi max-size dan max-file bersamaan, lalu cek dengan docker inspect. |

## Checklist sebelum menutup terminal

Saya tahu nama container atau layanan yang benar dari docker ps -a.

Saya selalu memakai --tail atau --since supaya output tidak membanjir.

Saya membaca error pertama dalam satu percobaan, bukan baris terakhir.

Container yang crash tidak saya hapus sebelum lognya dibaca.

max-size dan max-file sudah diisi bersamaan, dan container sudah dibuat ulang.

## Belajar lebih dalam

Panduan ini fokus pada perintahnya. Untuk memahami kenapa log disimpan seperti ini, apa bedanya json-file dengan journald, dan cara membaca log deploy yang gagal, ikuti pelajaran

. Kalau kamu ingin membaca log server tanpa login SSH dulu, lihat juga

.

Kebiasaan yang cukup untuk hampir semua masalah: cari namanya dengan docker ps -a, baca dengan --tail, persempit dengan --since, dan batasi ukuran log sebelum disk penuh. Sisanya adalah membaca dengan tenang dari error pertama.

## Sumber dan dokumentasi resmi

- Docker Docs: docker container logs
- Docker Docs: docker compose logs
- Docker Docs: Configure logging drivers
- Docker Docs: JSON File logging driver
- Docker Docs: Start containers automatically (restart policies)

## Source links

- https://docs.docker.com/reference/cli/docker/container/logs/
- https://docs.docker.com/reference/cli/docker/compose/logs/
- https://docs.docker.com/engine/logging/configure/
- https://docs.docker.com/engine/logging/drivers/json-file/
- https://docs.docker.com/engine/containers/start-containers-automatically/

## FAQ

### Bagaimana cara melihat docker logs dari container yang sedang jalan?

Jalankan docker logs --tail 50 nama-container untuk melihat 50 baris terakhir. Tambahkan -f (--follow) untuk terus mengikuti baris baru, dan --since 10m untuk hanya menampilkan sepuluh menit terakhir. Cari dulu nama container dengan docker ps -a.

### Kenapa docker logs kosong padahal container berjalan?

Docker hanya menangkap apa yang ditulis proses utama ke standard output dan standard error. Kalau aplikasi menulis ke file lognya sendiri di dalam container, docker logs tidak punya apa-apa untuk ditampilkan. Arahkan aplikasi ke stdout dan stderr, atau kaitkan file lognya ke keduanya.

### Apakah log container yang crash atau berhenti masih bisa dibaca?

Bisa, selama container-nya belum dihapus. Cari dengan docker ps -a yang juga menampilkan container yang berhenti, lalu jalankan docker logs --tail 100 --timestamps padanya. Jangan hapus container dengan docker rm sebelum lognya terbaca, karena log json-file disimpan per container.

### Apa bedanya docker logs dan docker compose logs?

docker logs membaca satu container berdasarkan nama atau ID. docker compose logs membaca layanan dalam proyek Compose, menerima nama layanan sebagai argumen, dan tanpa argumen menampilkan semua layanan dengan awalan di setiap baris. Keduanya menerima --follow, --tail, --since, dan --timestamps.

### Kenapa file log Docker memakan banyak ruang disk?

Driver json-file bawaan tidak merotasi log kecuali kamu mengisi max-size, dan max-file hanya berfungsi bila max-size juga diisi. Tambahkan blok logging dengan max-size 10m dan max-file 3 di file compose, lalu buat ulang container karena container yang sudah ada mempertahankan opsi lamanya.

---

- HTML version: https://www.matthewswong.com/id/blog/cara-melihat-docker-logs-untuk-pemula/
- English: https://www.matthewswong.com/en/blog/cara-melihat-docker-logs-untuk-pemula/
- Site index for agents: https://www.matthewswong.com/llms.txt
- Sitemap: https://www.matthewswong.com/sitemap.xml
- API description (OpenAPI): https://www.matthewswong.com/openapi.json
