Docker melihat log dari kontainer yang keluar


Jawaban:


111

Gunakan docker logs. Ini juga berfungsi untuk container yang dihentikan dan menangkap seluruh aliran STDOUT dan STDERR dari proses utama container:

$ docker run -d --name test debian echo "Hello World"
02a279c37d5533ecde76976d7f9d1ca986b5e3ec03fac31a38e3dbed5ea65def

$ docker ps -a
CONTAINER ID    IMAGE     COMMAND        CREATED             STATUS                     PORTS               NAMES
49daa9d41a24    debian    "echo test"    2 minutes ago       Exited (0) 2 minutes ago                       test

$ docker logs -t test
2016-04-16T15:47:58.988748693Z Hello World

4
Untuk tumpukan buruh pelabuhan yang dimulai ulang setiap beberapa detik: stack=s1 && c=$(task_id=$(docker stack ps "$stack" --filter desired-state=shutdown | tail -n +2 | head -n 1 | awk '{print $1}') && docker inspect --format '{{.Status.ContainerStatus.ContainerID}}' "$task_id") && docker logs "$c"Nama tumpukan ditentukan di awal perintah.
x-yuri

19

docker logs --tail=50 <container id> untuk lima puluh baris terakhir - berguna bila penampung Anda telah berjalan lama.


1
@Whitefret, saya telah memperbarui jawaban dengan saran Anda. Jawaban asli akan menarik seluruh log ke bawah dan membuntutinya secara lokal, akan memakan waktu yang sangat lama dengan log yang besar dan jaringan yang lambat
Matthew

Di manajer peringatan, saya melihat banyak pesan ini tetapi tidak yakin apakah ini terkait dengan peringatan:
Arnav Bose

11

Anda dapat menggunakan perintah di bawah ini untuk menyalin log bahkan dari penampung yang keluar:

docker cp container_name :path_of_file_in_container destination_path_locally

Misalnya:

docker cp sravya:/tmp/report /root/mylog

7

Untuk langsung melihat logfile dari kontainer yang keluar dalam waktu kurang, gulir ke akhir file, saya menggunakan:

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

dijalankan sebagai ./viewLogs.sh CONTAINERNAME

Metode ini memiliki keuntungan atas docker logspendekatan berbasis, yaitu file dibuka secara langsung, bukan di-streaming.

sudo diperlukan, karena LogPath / File biasanya dimiliki oleh root

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.