search
HomeOperation and MaintenanceNginxHow to scroll nginx log file in docker

Docker usage

1. docker ps to view running containers

2. docker images to view docker images

3. docker rm id (Container ID) Delete the container (the container ID can be viewed through docker ps, the container must be stopped before it can be deleted)

 3.1 Delete all containers docker rm `docker ps -a -q`

 4 . docker stop id (container id) stops the container from running

 5. docker rmi id (mirror id) deletes the image

 6. docker pull ubuntu:16.04 (mirror name: version number) downloads the image

 7. docker run -it ubuntu:16.04 Create and run the container container

 -t means to specify a pseudo terminal or terminal in the new container

 -i means to allow us Interact with (stdin) in the container

 -p specifies the mapped port

 -d Run the container in the background and print the container id

 7.1 docker run -dit ubuntu:16.04 Create and run the container in the background

 7.2 docker run -ditp 8080:8080 (host port: container port) ubuntu:16.04 Create and run the container in the background and map the port of the container

 8. docker attach id (Container id) Enter the running container environment

 9. Exit the container

 9.1 exit Directly exit the container and terminate the container running

 9.2 [ctrl p] [ctrl q ] (shortcut key) Exit the container, but will not terminate the container running

 10. docker commit -m'version identification' id (container id) ubuntu:16.04 (image and version number) Submit the image and generate the image ( You can use this command to package the built container into a new image or overwrite the original image (that is, modify the content of the original image, and the generated image name can be directly overwritten if the name of the generated image is the same as the version number))

How to scroll nginx log file in docker

Thoughts

nginx official actually gives instructions on how to rotate logs:

rotating log-files
in order to rotate log files, they need to be renamed first. after that usr1 signal should be sent to the master process. the master process will then re-open all currently open log files and assign them an unprivileged user under which the worker processes are running, as an owner. after successful re-opening, the master process closes all open files and sends the message to worker process to ask them to re-open files. worker processes also open new files and close old files right away. as a result, old files are almost immediately available for post processing, such as compression. Name
•Then send the usr1 signal to the nginx master process

•The nginx master process will do some processing after receiving the signal, and then ask the worker process to reopen the log file

•The worker process opens a new log file And close the old log file

In fact, the only work we really need to do is the first two points!


Create a test environment

Assuming that docker has been installed in your system, here we run an nginx container directly:

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

Note that we bind the nginx log Mounted to the logs directory in the current directory.

Save the following content to the test.sh file:

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

Then run this script to simulate the generation of continuous log records.


Script to create rolling log

Create the rotatelog.sh file with the following content:

#!/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`

getdatestring function takes the current time and formats it as a string, such as "201807241310 ", the author prefers to name files with date and time. Note that the time zone is specified here through tz='asia/chongqing', because by default the format is UTC time, which is weird to use (you need to make up for 8 hours in real time). The following two mv commands are used to rename log files. Finally, send the usr1 signal to the nginx master process through the kill command.

Add executable permissions to the rotatelog.sh file through the following command and copy it to the $(pwd)/logs/nginx directory:

$ chmod +x rotatelog.sh
$ sudo cp rotatelog.sh $(pwd)/logs/nginx

Perform rolling operations regularly

Our nginx runs in a container, so we need to send the usr1 signal to the nginx master process in the container. Therefore we need to execute the rotatelog.sh script in the mynginx container through the docker exec command:

$ docker exec mynginx bash /var/log/nginx/rotatelog.sh

Executing the above command once will generate a batch of new log files as scheduled:

Next we configure this command in the scheduled task and let it be executed at 1 o'clock every morning once. Execute the crontab -e command and add the following lines at the end of the file:

* 1 * * * docker exec mynginx bash /var/log/nginx/rotatelog.shHow to scroll nginx log file in docker

Save and exit. The following picture is the effect of scrolling every 5 minutes during the author's test process:

How to scroll nginx log file in docker

Why not mv the log file directly in the host?

Theoretically, this is possible, because the contents of the data volume mounted through binding are the same when viewed from the host and from the container. But when you actually do this you are likely to run into permission issues. In the host machine, you generally use an ordinary user, while the owner of the log file generated in the container will be a special user, and generally other users will not be given write and execution permissions:


How to scroll nginx log file in docker

Of course, if you are using the root user on the host machine, there will be no problem.

Can the signal be sent from the host?

In fact, the full name of this question should be: Can a signal be sent from the host to the nginx master process in the docker container?

The answer is, yes.

We can use the command:

$ docker container kill mynginx -s usr

to process No. 1 in the container (nginx master )Send usr1 signal (this method can only send signals to process No. 1):

How to scroll nginx log file in docker

Combining the above two questions, we can write another way. Scroll nginx logs in docker. This method does not require executing commands in the container through the docker exec command, but completes all operations on the host:

•First rename the log file in the container data volume
• Send usr1 signal to process No. 1 in the container

The above is the detailed content of How to scroll nginx log file in docker. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:亿速云. If there is any infringement, please contact admin@php.cn delete
NGINX Unit: The Architecture and How It WorksNGINX Unit: The Architecture and How It WorksApr 23, 2025 am 12:18 AM

NGINXUnit improves application performance and manageability with its modular architecture and dynamic reconfiguration capabilities. 1) Modular design includes master processes, routers and application processes, supporting efficient management and expansion. 2) Dynamic reconfiguration allows seamless update of configuration at runtime, suitable for CI/CD environments. 3) Multilingual support is implemented through dynamic loading of language runtime, improving development flexibility. 4) High performance is achieved through event-driven models and asynchronous I/O, and remains efficient even under high concurrency. 5) Security is improved by isolating application processes and reducing the mutual influence between applications.

Using NGINX Unit: Deploying and Managing ApplicationsUsing NGINX Unit: Deploying and Managing ApplicationsApr 22, 2025 am 12:06 AM

NGINXUnit can be used to deploy and manage applications in multiple languages. 1) Install NGINXUnit. 2) Configure it to run different types of applications such as Python and PHP. 3) Use its dynamic configuration function for application management. Through these steps, you can efficiently deploy and manage applications and improve project efficiency.

NGINX vs. Apache: A Comparative Analysis of Web ServersNGINX vs. Apache: A Comparative Analysis of Web ServersApr 21, 2025 am 12:08 AM

NGINX is more suitable for handling high concurrent connections, while Apache is more suitable for scenarios where complex configurations and module extensions are required. 1.NGINX is known for its high performance and low resource consumption, and is suitable for high concurrency. 2.Apache is known for its stability and rich module extensions, which are suitable for complex configuration needs.

NGINX Unit's Advantages: Flexibility and PerformanceNGINX Unit's Advantages: Flexibility and PerformanceApr 20, 2025 am 12:07 AM

NGINXUnit improves application flexibility and performance with its dynamic configuration and high-performance architecture. 1. Dynamic configuration allows the application configuration to be adjusted without restarting the server. 2. High performance is reflected in event-driven and non-blocking architectures and multi-process models, and can efficiently handle concurrent connections and utilize multi-core CPUs.

NGINX vs. Apache: Performance, Scalability, and EfficiencyNGINX vs. Apache: Performance, Scalability, and EfficiencyApr 19, 2025 am 12:05 AM

NGINX and Apache are both powerful web servers, each with unique advantages and disadvantages in terms of performance, scalability and efficiency. 1) NGINX performs well when handling static content and reverse proxying, suitable for high concurrency scenarios. 2) Apache performs better when processing dynamic content and is suitable for projects that require rich module support. The selection of a server should be decided based on project requirements and scenarios.

The Ultimate Showdown: NGINX vs. ApacheThe Ultimate Showdown: NGINX vs. ApacheApr 18, 2025 am 12:02 AM

NGINX is suitable for handling high concurrent requests, while Apache is suitable for scenarios where complex configurations and functional extensions are required. 1.NGINX adopts an event-driven, non-blocking architecture, and is suitable for high concurrency environments. 2. Apache adopts process or thread model to provide a rich module ecosystem that is suitable for complex configuration needs.

NGINX in Action: Examples and Real-World ApplicationsNGINX in Action: Examples and Real-World ApplicationsApr 17, 2025 am 12:18 AM

NGINX can be used to improve website performance, security, and scalability. 1) As a reverse proxy and load balancer, NGINX can optimize back-end services and share traffic. 2) Through event-driven and asynchronous architecture, NGINX efficiently handles high concurrent connections. 3) Configuration files allow flexible definition of rules, such as static file service and load balancing. 4) Optimization suggestions include enabling Gzip compression, using cache and tuning the worker process.

NGINX Unit: Supporting Different Programming LanguagesNGINX Unit: Supporting Different Programming LanguagesApr 16, 2025 am 12:15 AM

NGINXUnit supports multiple programming languages ​​and is implemented through modular design. 1. Loading language module: Load the corresponding module according to the configuration file. 2. Application startup: Execute application code when the calling language runs. 3. Request processing: forward the request to the application instance. 4. Response return: Return the processed response to the client.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.