Rumah Operasi dan penyelenggaraan Nginx Bagaimana untuk menatal log nginx dalam docker

Bagaimana untuk menatal log nginx dalam docker

May 29, 2023 pm 09:40 PM
docker nginx

penggunaan docker

 1. docker ps to view running containers

 2. docker images to view docker images

 3. docker rm id (ID kontena) Padamkan bekas (ID kontena boleh dilihat melalui docker ps, bekas mesti dihentikan sebelum ia boleh dipadamkan)

 3.1 Padam semua bekas docker rm `docker ps -a -q`

7. docker run -it ubuntu:16.04 Cipta dan jalankan bekas kontena

-t bermaksud untuk menentukan terminal atau terminal pseudo dalam yang baharu bekas

-i bermaksud benarkan kami Berinteraksi dengan (stdin) dalam bekas

-p menentukan port yang dipetakan

-d menjalankan bekas di latar belakang dan mencetak bekas id

7.1 docker run -dit ubuntu:16.04 Cipta dan jalankan bekas di latar belakang

 7.2 docker run -ditp 8080:8080 (host port: container port) ubuntu:16.04 Cipta dan jalankan bekas di latar belakang dan petakan port kontena

8. id lampiran docker (id Container) Masukkan persekitaran kontena yang sedang berjalan

9. Keluar dari bekas

9.1 exit Exit bekas terus dan tamatkan bekas berjalan

9.2 [ctrl+p]+[ ctrl+q] (kekunci pintasan) Keluar dari bekas, tetapi ia tidak akan menamatkan bekas berjalan

 10. docker commit -m'version idification' id (id kontena) ubuntu:16.04 (imej dan nombor versi) Serahkan imej dan Hasilkan imej (anda boleh menggunakan arahan ini untuk membungkus bekas yang dibina ke dalam imej baharu atau menulis ganti imej asal ( iaitu, ubah suai kandungan imej asal, dan nama imej yang dijana boleh terus ditulis ganti jika nama imej yang dihasilkan adalah sama dengan nombor versi))

Baiklah, semua orang tahu tentang Docker. Berikut adalah perkara utama artikel ini.

nginx sendiri tidak menangani masalah guling balak, ia menendang bola kepada pengguna. Biasanya, anda boleh menggunakan alat logrotate untuk menyelesaikan tugasan ini, atau jika anda mahu, anda boleh menulis pelbagai skrip untuk menyelesaikan tugas yang sama. Pengarang artikel ini memperkenalkan cara menatal fail log nginx yang berjalan di docker (gambar di bawah adalah dari Internet).


Berfikir

Bagaimana untuk menatal log nginx dalam dockernginx official sebenarnya memberi arahan tentang cara memutar log:

berputar log-filesuntuk memutar fail log, ia perlu dinamakan semula terlebih dahulu selepas itu isyarat usr1 harus dihantar ke proses induk kemudiannya akan membuka semula semua fail log yang sedang dibuka dan menetapkannya sebagai fail yang tidak mempunyai hak istimewa pengguna di mana proses pekerja sedang berjalan, sebagai pemilik selepas berjaya membuka semula, proses induk menutup semua fail yang terbuka dan menghantar mesej kepada proses pekerja untuk meminta mereka membuka semula fail baru dan menutup fail pemampatan lama serta-merta. Akibatnya, fail lama hampir serta-merta tersedia untuk pemprosesan pos, seperti Namakan semula fail log lama

•Kemudian hantar isyarat usr1 ke proses induk nginx

•Proses induk nginx. akan melakukan beberapa pemprosesan selepas menerima isyarat, dan kemudian meminta proses pekerja membuka semula fail log
•Pekerja Proses membuka fail log baharu dan menutup fail log lama

Malah, satu-satunya kerja yang kita benar-benar yang perlu dilakukan ialah dua mata pertama!

Buat persekitaran ujian

Dengan mengandaikan bahawa docker telah dipasang dalam sistem anda, di sini kami menjalankan kontena nginx secara langsung:

$ docker run -d \
 -p 80:80 \
 -v $(pwd)/logs/nginx:/var/log/nginx \
 --restart=always \
 --name=mynginx \
 nginx:1.11.3
Salin selepas log masuk

Perhatikan bahawa kami mengikat log nginx Dipasang pada direktori log dalam direktori semasa.



Simpan kandungan berikut ke dalam fail test.sh:

#!/bin/bash
for ((i=1;i<=100000;i++))
do
 curl http://localhost > /dev/null
 sleep 1
done
Salin selepas log masuk

Kemudian jalankan skrip ini untuk mensimulasikan pengelogan berterusan.

Skrip untuk mencipta log bergolek

Buat fail rotatelog.sh dengan kandungan berikut:

#!/bin/bash
getdatestring()
{
 tz=&#39;asia/chongqing&#39; date "+%y%m%d%h%m"
}
datestring=$(getdatestring)
mv /var/log/nginx/access.log /var/log/nginx/access.${datestring}.log
mv /var/log/nginx/error.log /var/log/nginx/error.${datestring}.log
kill -usr1 `cat /var/run/nginx.pid`
Salin selepas log masuk

fungsi getdatestring mengambil masa semasa dan memformatkannya menjadi rentetan, seperti " 201807241310 ", penulis lebih suka menamakan fail dengan tarikh dan masa. Ambil perhatian bahawa zon waktu ditentukan di sini melalui tz='asia/chongqing', kerana secara lalai formatnya ialah waktu UTC, yang pelik untuk digunakan (anda perlu memikirkan +8 jam dalam masa nyata). Dua arahan mv berikut digunakan untuk menamakan semula fail log. Akhir sekali, hantar isyarat usr1 ke proses induk nginx melalui arahan bunuh.


Tambahkan kebenaran boleh laku pada fail rotatelog.sh melalui arahan berikut dan salin ke direktori $(pwd)/logs/nginx:

$ chmod +x rotatelog.sh
$ sudo cp rotatelog.sh $(pwd)/logs/nginx
Salin selepas log masuk

Lakukan operasi rolling dengan kerap

Nginx kami berjalan dalam bekas, jadi kami perlu menghantar isyarat usr1 ke proses induk nginx dalam bekas. Oleh itu, kita perlu melaksanakan skrip rotatelog.sh dalam bekas mynginx melalui arahan docker exec:

Melaksanakan arahan di atas sekali akan menghasilkan sekumpulan fail log baharu sebagai dijadualkan:

Seterusnya kami mengkonfigurasi arahan ini dalam tugas yang dijadualkan dan biarkan ia dilaksanakan sekali setiap pagi pada pukul 1. Jalankan arahan crontab -e dan tambah baris berikut pada penghujung fail:

* 1 * * * docker exec mynginx bash /var/log/nginx/rotatelog.sh

Bagaimana untuk menatal log nginx dalam docker

Simpan dan keluar. Gambar di bawah adalah kesan tatal setiap 5 minit semasa ujian pengarang:

Bagaimana untuk menatal log nginx dalam docker

Mengapa tidak mv fail log terus dalam hos?

Secara teorinya ini mungkin, kerana kandungan volum data yang dipasang melalui bind adalah sama apabila dilihat dari hos dan dari bekas. Tetapi apabila anda benar-benar melakukan ini, anda mungkin menghadapi masalah kebenaran. Dalam mesin hos, anda biasanya menggunakan pengguna biasa, dan pemilik fail log yang dijana dalam bekas akan menjadi pengguna khas, dan secara amnya pengguna lain tidak akan diberikan kebenaran menulis dan melaksanakan:


Bagaimana untuk menatal log nginx dalam docker

Sudah tentu, jika anda menggunakan pengguna root pada mesin hos, tidak akan ada masalah.

Bolehkah isyarat dihantar dari mesin hos?

Malah, nama penuh soalan ini sepatutnya: Bolehkah isyarat dihantar dari hos ke proses induk nginx dalam bekas docker?

Jawapannya, ya.

Penulis memperkenalkan masalah penangkapan isyarat dalam bekas dalam artikel ini. Dalam artikel itu kami memperkenalkan perintah bunuh buruh pelabuhan yang menghantar isyarat kepada proses dalam bekas. Kita boleh menghantar isyarat usr1 untuk memproses No. 1 (master nginx) dalam bekas melalui arahan:

$ docker container kill mynginx -s usr

(kaedah ini hanya boleh menghantar isyarat untuk memproses No. 1 ):

Bagaimana untuk menatal log nginx dalam docker

Menggabungkan dua soalan di atas, kita boleh menulis cara lain untuk menatal log masuk docker nginx. Kaedah ini tidak memerlukan pelaksanaan perintah dalam bekas melalui arahan docker exec, tetapi melengkapkan semua operasi pada mesin hos:

•Namakan semula fail log dahulu dalam volum data kontena
• Hantar isyarat usr1 untuk memproses No 1 dalam bekas

Atas ialah kandungan terperinci Bagaimana untuk menatal log nginx dalam docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan desktop docker Cara menggunakan desktop docker Apr 15, 2025 am 11:45 AM

Bagaimana cara menggunakan desktop Docker? Docktop Docktop adalah alat untuk menjalankan bekas Docker pada mesin tempatan. Langkah -langkah untuk digunakan termasuk: 1. Pasang desktop Docker; 2. Mulakan desktop Docker; 3. Buat imej Docker (menggunakan Dockerfile); 4. Membina imej Docker (menggunakan Docker Build); 5. Jalankan bekas Docker (menggunakan Docker Run).

Cara Membaca Versi Docker Cara Membaca Versi Docker Apr 15, 2025 am 11:51 AM

Untuk mendapatkan versi Docker, anda boleh melakukan langkah -langkah berikut: Jalankan arahan Docker "Docker -version" untuk melihat versi klien dan pelayan. Untuk MAC atau Windows, anda juga boleh melihat maklumat versi melalui tab versi Docktop GUI atau menu desktop Docker.

Cara Mengubah Sumber Imej Docker di China Cara Mengubah Sumber Imej Docker di China Apr 15, 2025 am 11:30 AM

Anda boleh beralih ke sumber cermin domestik. Langkah -langkah adalah seperti berikut: 1. Edit fail konfigurasi /etc/docker/daemon.json dan tambahkan alamat sumber cermin; 2. Selepas menyimpan dan keluar, mulakan semula perkhidmatan Docker Sudo SystemCtl Docker untuk meningkatkan kelajuan muat turun dan kestabilan imej.

Cara membuat cermin di Docker Cara membuat cermin di Docker Apr 15, 2025 am 11:27 AM

Langkah -langkah untuk membuat imej Docker: Tulis Dockerfile yang mengandungi arahan membina. Bina imej di terminal, menggunakan arahan membina Docker. Tag imej dan tetapkan nama dan tag menggunakan arahan tag docker.

Cara mengemas kini imej Docker Cara mengemas kini imej Docker Apr 15, 2025 pm 12:03 PM

Langkah -langkah untuk mengemas kini imej Docker adalah seperti berikut: Tarik tag imej terkini imej baru memadam imej lama untuk tag tertentu (pilihan) mulakan semula bekas (jika diperlukan)

Cara Melihat Log dari Docker Cara Melihat Log dari Docker Apr 15, 2025 pm 12:24 PM

Kaedah untuk melihat log Docker termasuk: Menggunakan arahan Log Docker, contohnya: Log Docker Container_Name Gunakan arahan docker exec untuk menjalankan /bin /sh dan lihat fail log, contohnya: docker exec -it container_name /bin /sh; Cat /var/log/container_name.log Gunakan arahan log docker-compose compose, contohnya: docker-compose -f docker-com

Cara Menyelamatkan Gambar Docker Cara Menyelamatkan Gambar Docker Apr 15, 2025 am 11:54 AM

Untuk menyimpan imej di Docker, anda boleh menggunakan arahan Docker Commit untuk membuat imej baru, yang mengandungi keadaan semasa bekas yang ditentukan, Sintaks: Docker Commit [Options] Nama Imej Container ID. Untuk menyimpan imej ke repositori, anda boleh menggunakan arahan PUSH Docker, Sintaks: Docker Push Nama Imej [: TAG]. Untuk mengimport imej yang disimpan, anda boleh menggunakan arahan tarik docker, sintaks: docker tarik nama imej [: tag].

Cara memeriksa nama bekas Docker Cara memeriksa nama bekas Docker Apr 15, 2025 pm 12:21 PM

Anda boleh menanyakan nama kontena Docker dengan mengikuti langkah -langkah: Senaraikan semua bekas (Docker PS). Tapis senarai kontena (menggunakan arahan grep). Mendapat nama kontena (terletak di lajur "Nama").

See all articles