Di mana file log dengan log dari penampung?

117

Saya menjalankan beberapa kontainer menggunakan docker-compose. Saya dapat melihat log aplikasi dengan perintah docker-compose logs. Namun saya ingin mengakses file log mentah untuk mengirimkannya ke suatu tempat misalnya? Di mana letaknya? Saya kira itu log terpisah per setiap wadah (di dalam wadah?) Tapi di mana saya bisa menemukannya?

pengguna606521
sumber

Jawaban:

191

Log penampung dapat ditemukan di:

/var/lib/docker/containers/<container id>/<container id>-json.log

(jika Anda menggunakan format log default yaitu json)

Michael
sumber
3
Ada banyak folder seperti 004279dd2985037950beeba7e6fe45c10354476d3b82afb68e72dd612b03a8ff. Bagaimana cara mengetahui folder mana yang harus dilihat untuk wadah tertentu?
Praveen Sripati
3
@PraveenSripati id penampung untuk menjalankan penampung ditampilkan di kolom pertama jika Anda melakukannyadocker ps
CS
1
@PraveenSripati menulis docker ps, Anda akan mendapatkan semua penampung yang tersedia beserta ID-nya. Salin ID penampung yang Anda inginkan, lalu dari /var/lib/docker/containers/run ls | grep <paste the copied docker ID>. Kemudian Anda akan melihat kontainer buruh pelabuhan itu
TheLebDev
cd /var/lib/docker/containers/ -bash: cd: / var / lib / docker / containers /: Izin ditolak sudo cd /var/lib/docker/containers/ sudo: cd: perintah tidak ditemukan
canbax
2
@Chris yang harus saya lakukan docker ps --no-truncuntuk melihat seluruh id
Dan Z
97

Anda dapat docker inspectsetiap penampung untuk melihat di mana log mereka:

docker inspect --format='{{.LogPath}}' $INSTANCE_ID

Dan, jika Anda mencoba mencari tahu di mana log akan mengelola ukuran kolektifnya, atau menyesuaikan parameter logging itu sendiri, Anda akan menemukan yang berikut ini relevan.

Memperbaiki jumlah ruang yang disediakan untuk log

Ini diambil dari Permintaan untuk kemampuan menghapus riwayat log (masalah 1083) ):

Docker 1.8 dan docker-compose 1.4 sudah ada metode untuk membatasi ukuran log menggunakan driver log tulis docker dan ukuran maks log-opt:

mycontainer:
  ...
  log_driver: "json-file"
  log_opt:
    # limit logs to 2MB (20 rotations of 100K each)
    max-size: "100k"
    max-file: "20"

Dalam file docker compose versi '2', sintaksnya berubah sedikit:

version: '2'
...
mycontainer:
  ...
  logging:
    #limit logs to 200MB (4rotations of 50M each)
    driver: "json-file"
    options:
      max-size: "50m"
      max-file: "4"

(perhatikan bahwa dalam kedua sintaksis, angka-angka tersebut dinyatakan sebagai string, dalam tanda kutip)

Kemungkinan masalah dengan docker-compose logstidak menghentikan

  • Masalah 1866 : perintah logstidak keluar jika wadah sudah dihentikan
VonC
sumber
1
Versi singkatnya: buruh pelabuhan memeriksa -f '{{.LogPath}}' $ INSTANCE_ID
Bienvenido David
12

Untuk melihat berapa banyak ruang yang digunakan setiap log penampung, gunakan ini:

docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs ls -hl

(Anda mungkin membutuhkan sudosebelumnya ls).

Pria Brasil itu
sumber
Saya mendapat izin ditolak.
Shakedk
1
Menambahkan sudo pada akhirnya membantu: docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs sudo du -hl
Shakedk
2

Untuk langsung melihat logfile di less, saya menggunakan:

docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less

dijalankan sebagai ./viewLogs.sh CONTAINERNAME

eserasor
sumber
2

Pada Windows, lokasi default adalah: C:\ProgramData\Docker\containers\<container-id>-json.log.

pmohandas
sumber
Ini adalah saat menjalankan container lokal untuk pengembangan! terima kasih - sangat sulit untuk menemukan info ini
Percy
1

Mulai 22/8/2018, log dapat ditemukan di:

/data/docker/containers/<container id>/<container id>-json.log
lixzhang
sumber
1
docker inspect <containername> | grep log
Vasili Pascal
sumber