GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Di mana Docker Menyimpan File Log?

Men-debug sebagian besar program Linux biasanya melibatkan pemeriksaan file log, yang bisa menjadi proses yang rumit. Namun, saat berjalan di lingkungan kemas di bawah Docker, Anda harus menggunakan alat yang lebih spesifik untuk men-debug aplikasi dalam produksi.

Di mana Log Disimpan?

Jawaban sederhananya adalah Docker menyimpan log kontainer di lokasi penyimpanan utamanya, /var/lib/docker/ . Setiap penampung memiliki log khusus untuk ID mereka (ID lengkap, bukan yang disingkat yang biasanya ditampilkan) dan Anda dapat mengaksesnya seperti ini:

/var/lib/docker/containers/ID/ID-json.log

Di situlah di mana mereka disimpan, tetapi karena dalam format JSON, mereka tidak mudah dibaca, dan harus menggunakan ID penampung yang lengkap itu menjengkelkan. Docker menyediakan perintah bawaan untuk melihatnya:

docker logs -f e4bd48ef3103

Di sini, -f flag akan membuat prompt tetap terbuka dan "ikuti" setiap entri baru dalam file. Anda juga dapat --tail file, atau gunakan --timestamps untuk menampilkan waktu log, atau gunakan --until dan --since untuk memfilter berdasarkan waktu.

Jika Anda menggunakan Docker Compose, Anda dapat menggunakan perintah log dari itu untuk melihat semua log dengan mudah:

docker-compose logs

Namun, satu hal yang akan Anda perhatikan adalah bahwa ini adalah STDOUT dan STDERR, yang berguna untuk banyak hal, tetapi hanya menampilkan output konsol dari titik masuk yang ditentukan oleh "CMD" di file Docker. Banyak aplikasi memiliki sistem pencatatan khusus mereka sendiri, yang sering kali masuk ke file seperti /var/log/nginx/access.log . Mengakses log seperti ini masih dimungkinkan dari sisi host melalui Docker.

Melihat Log Dari Aplikasi Di Dalam Penampung

Tergantung pada wadahnya, ini mungkin tidak diperlukan. Misalnya, wadah NGINX default diatur untuk mengirim log Docker ke STDOUT untuk mempermudah pemeriksaan log. Ia melakukan ini dengan symlink dari /dev/stdout ke file log, dan Anda dapat menyiapkan sesuatu yang serupa untuk container Anda.

RUN ln -sf /dev/stdout /var/log/nginx/access.log 
&& ln -sf /dev/stderr /var/log/nginx/error.log

Namun, jika Anda ingin memeriksa file tertentu di dalam wadah, Anda dapat melakukannya. Docker menyediakan exec -it perintah untuk memungkinkan Anda menjalankan perintah apa pun di dalam proses Docker yang sedang berjalan. Dengan ini, Anda dapat mengekor file log di dalam wadah Docker:

docker exec -it e4bd48ef3103 tail -f log.txt

Karena ini memungkinkan Anda menjalankan perintah apa pun, Anda dapat menggunakan journalctl atau strategi debugging lain yang Anda inginkan, selama Anda mengawalinya dengan docker exec -it . Anda bahkan dapat menjalankan /bin/bash jika Anda ingin masuk dan melihat-lihat.

Solusi yang lebih permanen yang bermain lebih baik dengan layanan host adalah dengan menggunakan volume mount Docker. Anda dapat mengikat direktori seperti /var/log/nginx ke volume yang terlihat dari host. Pertama, buat volume baru:

docker volume create nginx-logs

Dan jalankan wadah dengan --mount :

docker run -d 
--name devtest 
--mount source=nginx-logs,target=/var/log/nginx 
nginx:latest

Jika Anda menggunakan Docker Compose, prosesnya bisa otomatis:

version: "3.0"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - nginx-logs:/var/log/nginx/
volumes:
  nginx-logs:

Dengan cara ini, file log akan langsung dapat dicerna oleh layanan agregasi log apa pun di mesin host.

Melihat Log Daemon Docker

Jika Anda ingin melihat log khusus untuk keseluruhan layanan Docker di server Anda, dan bukan aplikasi kemas tertentu, Anda dapat melihat journalctl log:

sudo journalctl -fu docker.service

Ini adalah tempat penyimpanannya di sebagian besar sistem, tetapi di beberapa tempat berbeda:

  • Amazon Linux:/var/log/docker
  • CentOS/RHEL:/var/log/messages | grep docker
  • macOS:~/Library/Containers/com.docker.docker/Data/log/vm/dockerd.log
  • Windows:AppDataRoamingDockerlogvmdockerd.log

Docker
  1. Perintah Untuk Membersihkan File Log Lama?

  2. Bagaimana Cara Memutar File .swf?

  3. Di mana Wine Menyimpan File?

  1. File log Linux

  2. Cara mengubah jalur log audit di Docker MySQL

  3. Di mana Linux Mint menyimpan file untuk wallpaper desktop default?

  1. Ukuran Gambar Docker - Bagaimana Menjaganya Tetap Kecil?

  2. Di mana make install meletakkan file?

  3. Di mana menemukan file log Login SSH di centos