Pertama, saya menggunakan buruh pelabuhan 1.1.2 untuk klien dan server, jawaban ini mungkin sudah usang untuk versi buruh pelabuhan yang lebih baru karena buruh pelabuhan berkembang dengan cepat.
Lokasi file
Temukan direktori buruh pelabuhan Anda. Pada sistem yang menggunakan sistem gaya apt / debian, paket yang diinstal oleh repositori buruh pelabuhan https://get.docker.com/ubuntu
digunakan /var/lib/docker
. Kemungkinan direktori tersebut berada di tempat yang sama pada sistem lain (tidak dapat mengkonfirmasi).
di bawah containers/**CONTAINER_ID**
Anda akan menemukan info tentang wadah. Dalam file **CONTAINER_ID**-json.log
di folder itu, Anda akan menemukan file dengan semua log untuk wadah itu. Mungkin terlihat seperti file json, bukan. Ini aliran struktur json, satu per baris, masing-masing berisi satu baris log (setiap baris berakhir dengan a }
dan yang berikutnya dimulai dengan {
, sehingga bukan json yang valid secara keseluruhan).
Lokasi contoh: - /var/lib/docker/containers/05b6053c41a2130afd6fc3b158bda4e605b6053c41a2130afd6fc3b158bda4e6/05b6053c41a2130afd6fc3b158bda4e605b6053c41a2130afd6fc3b158bda4e6-json.log
Mengedit / Mengubah file itu
Saya menyarankan Anda untuk menggunakan jalan itu untuk melihat apakah atau tidak itu alasan Anda kehabisan ruang, tetapi tidak untuk login memutar mereka.
Saya lebih suka memastikan wadah tidak mencatat terlalu banyak baris (dengan menggunakan CMD di dockerfile yang mengalihkan output dari proses Anda ke file dalam volume atau ke / dev / null - dengan log yang diaktifkan dengan konfigurasi - dan Saya kemudian akan logrotate file log dengan wadah lain)
docker inspect
adalah temanmudocker inspect --format='{{.LogPath}}' $INSTANCE_ID
docker-machine
Di sini, satu-liner sederhana untuk membersihkan file log kontainer:
echo "" > $(docker inspect --format='{{.LogPath}}' <container_name_or_id>)
sumber
docker-machine ssh default "echo '' | sudo tee $(docker inspect --format='{{.LogPath}}' <container_name_or_id>)"
docker logs
selalu kosong ...docker inspect --format='{{.LogPath}}' <container_name_or_id>
bermanfaat. Terima kasih!jika Anda menjalankan
sudo lsof | grep '(deleted)'
, Anda mungkin menemukan bahwa ada banyak file log kontainer yang dihapus dibiarkan terbuka oleh buruh pelabuhanIni adalah log milik kontainer yang dihapus. Salah satu cara untuk menutupnya adalah dengan me-restart daemon docker itu sendiri. Ini tidak selalu layak.
Cara lain untuk membebaskan ruang ini adalah dengan menemukan deskriptor file yang relevan dan untuk memotongnya:
Di mana
17511
pid dari buruh pelabuhan dane49d81fc
merupakan bagian dari id nama file / wadah yang menyinggung. Di sini, fd adalah / proc / 17511 / fd / 25, jadi kami memotongnya:sumber
: > /proc/17511/fd/25
Saya menggunakan Docker versi 1.13.0, build 49bf474
Jika Anda menggunakan format logging standar
json-file
, maka Anda dapat menentukan opsi untuk memutar log.Anda dapat mengatur daemon buruh pelabuhan untuk melakukan itu atau mengaturnya per wadah.
Misalnya, ukuran file log 2 MB dan maksimum 5 file log:
Daemon Docker: Buat file
/etc/docker/daemon.json
:Docker run:
Untuk detailnya lihat konfigurasi logging dan dockerd
sumber
Sebuah jawaban yang terlambat, tetapi siapa pun di kapal yang sama mungkin lebih baik menjelajahi opsi untuk mengekspor log buruh pelabuhan mereka ke suatu tempat yang masuk akal untuk mengelola mereka. logspout berguna untuk mengumpulkan log dari semua kontainer buruh pelabuhan Anda dan mengirimkannya ke suatu tempat. JIKA Anda hanya perlu mempertimbangkan hal ini, mengirimnya ke daemon syslog host mungkin merupakan pendekatan yang baik, dan Anda dapat menggunakan mekanisme biasa untuk mengaturnya menjadi file dan memutarnya dari sana. Untuk lingkungan multi-host yang lebih besar, Anda mungkin melihat pengiriman ke tumpukan "ELK". yaitu Elasticsearch, Logstash dan Kibana.
sumber
Untuk menemukan lokasi buruh pelabuhan, Anda dapat menggunakan:
Jika Anda ingin mengosongkan ruang, Anda dapat melakukannya dengan cara ini:
Sekarang Anda dapat menghapus sebuah wadah dengan:
sumber
Lihat skrip ini di dokumentasi buruh pelabuhan resmi:
Bekerja dengan baik, tetapi buruh pelabuhan tidak melepaskan memori secara otomatis ... Script hanya menghapus file log.
sumber