Docker melihat log dari kontainer yang keluar

106

Adakah cara agar saya dapat melihat log wadah yang telah keluar?

Saya bisa mendapatkan id penampung dari penampung yang sudah keluar menggunakan docker ps -atetapi saya ingin tahu apa yang terjadi saat itu berjalan.

Tahu Tidak Banyak
sumber
Kemungkinan duplikat Di mana file log dengan log dari wadah?
Eserasatau

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
helmbert
sumber
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.

kliew
sumber
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
Sravya
sumber
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

eserasor
sumber