Cara Melihat Riwayat Acara Instalasi Docker Anda

  • Post author:
  • Post category:Tutorial

Docker Engine merekam peristiwa setiap kali tindakan signifikan diambil oleh daemon. Anda dapat mengakses log peristiwa untuk mengidentifikasi kapan suatu tindakan terjadi dan melacak perubahan pada objek dari waktu ke waktu.

Dalam artikel ini, kami akan menjelaskan apa yang direkam sebagai peristiwa dan kapan Anda mungkin ingin melihatnya. Kami kemudian akan menunjukkan cara memantau peristiwa secara real-time menggunakan Docker CLI dan REST API.

Apa itu Peristiwa Docker?Kejadian

Docker menggambarkan aktivitas yang dilakukan oleh daemon Docker Anda. Sebagian besar interaksi dengan objek seperti wadah, gambar, volume, dan jaringan merekam peristiwa, membuat log yang dapat Anda gunakan untuk memeriksa perubahan sebelumnya.

Ada banyak jenis peristiwa berbeda yang mengidentifikasi perubahan spesifik di lingkungan Anda:

Membuat dan menghapus wadahKesehatan wadah periksa statusPerintah yang dijalankan di dalam container dengan docker execMenarik dan mendorong gambarMembuat, menghancurkan, memasang, dan melepas volumeMengaktifkan dan menonaktifkan plugin daemon Dockers

Anda dapat melihat daftar lengkap di dokumentasi Docker.

Setiap peristiwa yang direkam menyertakan stempel waktu dan ID objek yang terpengaruh. Anda dapat menggunakan informasi ini untuk mengumpulkan riwayat perubahan pada lingkungan Anda, terlepas dari apakah Anda mengamati pemicu aslinya atau tidak.

Peristiwa yang disimpan juga dapat membantu mendiagnosis masalah seperti kegagalan penampung yang tidak terduga. Melihat log memungkinkan Anda mengidentifikasi waktu yang tepat saat penampung berhenti, memberikan titik data yang dapat Anda korelasikan dengan log Anda yang lain. Peristiwa dapat terbentuk ketika pemeriksaan kesehatan container mulai gagal, mempersempit periode yang diinginkan saat Anda perlu memeriksa layanan eksternal untuk menentukan akar penyebab masalah.

Streaming Peristiwa Docker Dengan Docker CLI

Peristiwa buruh pelabuhan Perintah CLI mengalirkan peristiwa dari daemon Docker Anda ke jendela terminal Anda. Acara akan muncul secara real-time hingga Anda menghentikan proses dengan menekan kombinasi keyboard Ctrl+C.

Menjalankan perintah tanpa argumen tidak akan menampilkan output apa pun untuk memulai. Hanya aktivitas baru yang ditampilkan sehingga output tetap kosong hingga suatu peristiwa terjadi. Anda dapat memprovokasinya dengan memulai wadah baru di shell yang berbeda:

$ docker run –rm hello-world

Beberapa peristiwa sekarang akan muncul di jendela terminal yang menjalankan perintah peristiwa buruh pelabuhan:

2022-05-31T15:20:00.267970018+01 :00 gambar tarik hello-world:latest (nama=hello-world) 2022-05-31T15:20:00.347054862+01:00 buat container 4a6c8d34a183363db5dbfdcc3cab4c82c4a341d719df56ec2e7f879ee8f02378 (image=nifty-world, name=nifty-world, :00.347805277+01:00 container attach 4a6c8d34a183363db5dbfdcc3cab4c82c4a341d719df56ec2e7f879ee8f02378 (image=hello-world, name=nifty_morse) 2022-05-31T15:20:00.621070053+01:00 container start 4a6c8d34a183363db5dbfdcc3cab4c82c4a341d719df56ec2e7f879ee8f02378 (image=hello-world, name=nifty_morse) …

Each acara ditampilkan pada barisnya sendiri. Stempel waktu acara ditampilkan terlebih dahulu, diikuti dengan jenis objek yang terpengaruh (seperti gambar atau wadah) dan kemudian tindakan yang diambil (seperti membuat, melampirkan, dan memulai). Sisa pesan berisi metadata yang berguna tentang objek. Contoh di atas mengungkapkan bahwa gambar hello-world:latest ditarik dan sebuah wadah dibuat darinya.

Memformat Output

Daftar acara mentah sering kali berat. Anda dapat memformat ulang output menggunakan flag –format yang menerima string template Go:

$ docker events –format `{{ .Time }} {{ .Action }} {{ .Type}} {{ .ID }} `

Running this example will produce output that looks like this:

1654006800 pull image hello-world:latest 1654006800 create container 4a6c8d34a183363db5dbfdcc3cab4c82c4a341d719df56ec2e7f879ee8f02378 1654006800 attach container 4a6c8d34a183363db5dbfdcc3cab4c82c4a341d719df56ec2e7f879ee8f02378 1654006800 start container 4a6c8d34a183363db5dbfdcc3cab4c82c4a341d719df56ec2e7f879ee8f02378

You can get events represented as JSON objects by using {{ json . }} sebagai template Anda string:

$ docker events –format `{{ json . }}` | jq { “status”: “create”, “id”: “4a6c8d34a183363db5dbfdcc3cab4c82c4a341d719df56ec2e7f879ee8f02378”, “from”: “hello-world”, “Type”: “container”, “Action”: “create”, “Aktor”: “buat”, “Aktor”: ID”: “4a6c8d34a183363db5dbfdcc3cab4c82c4a341d719df56ec2e7f879ee8f02378”, “Atribut”: { “image”: “hello-world”, “name”: “nifty_morse” } }, “timeNascope”: “local 1654006800347054800 }

Di sini JSON mentah sedang melewati jq sehingga cukup dicetak di terminal Anda. Ini membuat informasi lebih mudah untuk dipindai.

Saat Anda membuat string format kustom, Anda dapat menggunakan properti di output JSON sebagai referensi untuk placeholder yang didukung. Dalam kebanyakan kasus, Anda harus menggunakan huruf besar pada huruf pertama dari setiap properti, seperti waktu untuk {{ .Time }}.

Filtering Events

Log peristiwa untuk daemon Docker yang sibuk dapat dengan cepat menjadi berisik. Anda dapat mempersempit acara ke tindakan, objek, atau jenis objek tertentu dengan –filter flag:

docker events –filter type=container – Dapatkan semua event yang berhubungan dengan container.docker events –filter event=create – Dapatkan event pembuatan container.docker events –filter container=demo-container – Dapatkan semua event disimpan untuk container yang disebut demo-container (Anda dapat merujuk ID atau nama container).

Selain container, Anda dapat memfilter menurut semua jenis objek yang didukung nama seperti gambar, jaringan, dan volume.

Beberapa filter didukung saat Anda mengulangi tanda –filter. Filter berbeda diinterpretasikan sebagai kondisi AND logis; beberapa penggunaan filter yang sama menjadi klausa OR. Berikut adalah contoh yang menampilkan event create untuk container app-container dan api-container:

$ docker events –filter container=app-container –filter container=api-container –filter event=createAccessing Historical Events

docker events default untuk hanya menampilkan acara yang disimpan sejak perintah dijalankan. Anda dapat menyertakan peristiwa bersejarah dengan menambahkan tanda –since. Ini menerima ekspresi waktu yang dapat dibaca manusia atau stempel waktu absolut: kejadian docker

$ –sejak 1 jam $ kejadian buruh pelabuhan –sejak `2021-05-01T16:00:00`

Events yang direkam setelah waktu yang diberikan akan segera ditampilkan di terminal. Acara baru akan terus muncul secara real-time saat direkam.

Anda dapat mengecualikan acara setelah waktu tertentu dengan flag –until. Ini bekerja mirip dengan –since. Menggunakan –until akan menonaktifkan streaming peristiwa baru secara real-time karena berada di luar jangka waktu yang diminta.

Melakukan Streaming Peristiwa Docker Dari Daemon REST API

Cara lain untuk mengakses peristiwa tersimpan adalah melalui REST API daemon Docker. Anda dapat menggunakan titik akhir /events untuk melakukan streaming peristiwa secara real-time setelah Anda mengaktifkan API di host Docker Anda. Acara akan dikembalikan dalam format JSON:

$ curl http://127.0.0.1:2375/v1.41/events { “Type”: “container”, “Action”: “create”, “Actor”: { “ID “: “4a6c8d34a183363db5dbfdcc3cab4c82c4a341d719df56ec2e7f879ee8f02378”, “Atribut”: { “gambar”: “halo-dunia”, “nama”: “nifty_morse” } }, “cakupan”: “1656800”: “lokal” }

Titik akhir API mendukung filter, sejak, dan hingga parameter yang memiliki perilaku yang sama dengan rekan CLI mereka. Berikut cara mengambil semua peristiwa pembuatan penampung yang direkam dalam satu jam terakhir:

$ curl http://127.0.0.1:2375/v1.41/events?since=1h&filters={`type`:`container`,`action`: `create`}Mengirim Acara ke Layanan Eksternal

Docker tidak memiliki cara bawaan untuk mengirim acara ke layanan eksternal. Ini dapat berguna jika Anda ingin semua kreasi penampung Anda dicatat dalam platform pemantauan atau audit yang ada.

Anda dapat menyiapkan solusi Anda sendiri dengan membuat layanan sistem yang terus-menerus menjalankan peristiwa buruh pelabuhan. Itu harus mengirim setiap baris keluaran baru ke sistem eksternal Anda.

Pertama tulis skrip Bash yang mengimplementasikan fungsionalitas yang Anda butuhkan:

#!/bin/bash docker events –format `{{ .Time }} {{ .Action }} {{ .Jenis }} {{ .ID }}` | saat membaca acara lakukan curl -X POST -H “Content-Type: application/json” -d `{“event”: “$event”}` https://example.com/events done

Sekarang buat yang baru unit layanan systemd di /etc/systemd/system/docker-events.service:

[Unit] Description=Layanan Pemantauan Peristiwa Docker Kustom [Layanan] Jenis=forking ExecStart=/usr/local/bin/docker-events.sh [Instal ] WantedBy=multi-user.target

Akhirnya muat ulang systemd untuk memuat layanan Anda, lalu mulai dan aktifkan unit:

$ sudo systemctl daemon-reload $ sudo systemctl start docker-events $ sudo systemctl enable docker-events

Layanan Anda sekarang akan mengalirkan setiap acara baru ke platform pemantauan Anda. Mengaktifkan layanan mengonfigurasinya untuk memulai secara otomatis setiap kali host Anda melakukan boot ulang. Peristiwa

Summary

Docker dibuat setiap kali daemon memodifikasi objek di lingkungan Anda. Streaming log peristiwa memungkinkan Anda memantau aktivitas daemon secara real-time. Ini dapat membantu Anda men-debug masalah, mengaudit perubahan, dan memastikan event compliance.

As diambil langsung dari server Docker, event tersebut tidak boleh diandalkan jika Anda perlu mengambil informasi di masa mendatang. Hanya 1.000 entri yang dipertahankan secara bergulir dan Anda tidak dapat mengakses acara melalui sistem file host Docker Anda. Mekanisme ini paling cocok untuk tugas ad-hoc cepat di mana Anda mencari informasi spesifik yang terkait dengan aktivitas terbaru. Untuk retensi jangka panjang, Anda harus menggunakan layanan sistem Anda sendiri untuk mengirim acara ke repositori eksternal.

Itulah berita seputar Cara Melihat Riwayat Acara Instalasi Docker Anda, semoga bermanfaat. Disadur dari HowToGeek.com.