{"id":48407,"date":"2025-02-08T08:25:21","date_gmt":"2025-02-08T08:25:21","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=48407"},"modified":"2025-07-12T05:38:43","modified_gmt":"2025-07-12T05:38:43","slug":"docker-logs","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/docker-logs\/","title":{"rendered":"Docker commands Guide &#8211; docker logs with examples"},"content":{"rendered":"\n<p>Here\u2019s a <strong>complete tutorial<\/strong> on <code>docker logs<\/code>, explaining <strong>what it does<\/strong>, a <strong>comprehensive list of examples<\/strong>, and <strong>use cases<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What is <code>docker logs<\/code>?<\/strong><\/h2>\n\n\n\n<p><code>docker logs<\/code> is a Docker command used to <strong>retrieve logs from a running or stopped container<\/strong>. It shows the <strong>stdout (standard output)<\/strong> and <strong>stderr (standard error)<\/strong> streams of the main process inside the container.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Key Features:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Works for both <strong>running and stopped containers<\/strong>.<\/li>\n\n\n\n<li>Supports <strong>real-time log streaming<\/strong> (<code>--follow<\/code>).<\/li>\n\n\n\n<li>You can <strong>filter logs by time<\/strong> or <strong>show recent logs<\/strong> (<code>--since<\/code>, <code>--tail<\/code>).<\/li>\n\n\n\n<li>Helps in <strong>debugging and monitoring<\/strong> containerized services.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Basic Syntax<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">docker<\/span> <span class=\"hljs-selector-tag\">logs<\/span> <span class=\"hljs-selector-attr\">&#91;OPTIONS]<\/span> <span class=\"hljs-selector-tag\">CONTAINER<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Common Options:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>-f<\/code>, <code>--follow<\/code>: Stream real-time logs.<\/li>\n\n\n\n<li><code>--since<\/code>: Show logs since a specific timestamp (<code>--since 10m<\/code> for last 10 minutes).<\/li>\n\n\n\n<li><code>--tail<\/code>: Show only the last <strong>n<\/strong> lines (<code>--tail 50<\/code>).<\/li>\n\n\n\n<li><code>-t<\/code>, <code>--timestamps<\/code>: Show timestamps for each log line.<\/li>\n\n\n\n<li><code>--details<\/code>: Show additional information provided by the container (if available).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Examples of <code>docker logs<\/code><\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Show Logs from a Running Container<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker logs my_container\n<\/code><\/span><\/pre>\n\n\n<p>This displays all logs from <code>my_container<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Follow Logs in Real-Time<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker logs -f my_container\n<\/code><\/span><\/pre>\n\n\n<p>This streams the logs in real-time. New log entries appear as they are written.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. Show Logs with Timestamps<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker logs -t my_container\n<\/code><\/span><\/pre>\n\n\n<p>This displays logs with timestamps, useful for tracking when each event occurred.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4. Show the Last 50 Lines of Logs<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker logs --tail 50 my_container\n<\/code><\/span><\/pre>\n\n\n<p>This shows only the most recent 50 lines of logs.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>5. Show Logs Since a Specific Time<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">docker<\/span> <span class=\"hljs-selector-tag\">logs<\/span> <span class=\"hljs-selector-tag\">--since<\/span> \"2023<span class=\"hljs-selector-tag\">-02-07T12<\/span><span class=\"hljs-selector-pseudo\">:00<\/span><span class=\"hljs-selector-pseudo\">:00\"<\/span> <span class=\"hljs-selector-tag\">my_container<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This displays logs generated after <code>12:00 PM<\/code> on February 7, 2023.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>6. Show Logs from the Last 10 Minutes<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker logs --since 10m my_container\n<\/code><\/span><\/pre>\n\n\n<p>This shows logs generated in the last 10 minutes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>7. Combine Options: Follow Logs with a Time Filter<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker logs -f --since 5m my_container\n<\/code><\/span><\/pre>\n\n\n<p>This streams real-time logs and includes logs from the last 5 minutes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>8. View Logs from a Stopped Container<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker logs my_stopped_container\n<\/code><\/span><\/pre>\n\n\n<p>You can still retrieve logs from a container even after it has stopped.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>9. Use <code>docker logs<\/code> in a Script<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">#!\/bin\/bash<\/span>\ndocker logs --tail <span class=\"hljs-number\">100<\/span> my_app &gt; logs.txt\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"Logs saved to logs.txt\"<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This script saves the last 100 lines of logs from <code>my_app<\/code> to <code>logs.txt<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>10. Filter Logs from a Specific Service in Docker Compose<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker-compose logs my_service\n<\/code><\/span><\/pre>\n\n\n<p>This displays logs for a specific service (<code>my_service<\/code>) in a <strong>Docker Compose<\/strong> setup.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Use Cases for <code>docker logs<\/code><\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Debugging Application Issues<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>View logs to identify errors or crashes.<\/li>\n\n\n\n<li>Example: Check logs for a web server (<code>nginx<\/code>) to find why it\u2019s returning 500 errors.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Monitoring Real-Time Activity<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Stream logs in real-time to monitor container activity.<\/li>\n\n\n\n<li>Example: Watch real-time logs from a <strong>Node.js<\/strong> application to see incoming requests.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. Tracking Application Performance<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use timestamps to analyze performance over time.<\/li>\n\n\n\n<li>Example: Measure how long certain tasks take in a background worker container.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4. Security and Auditing<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Review logs for <strong>security incidents<\/strong> or unauthorized access attempts.<\/li>\n\n\n\n<li>Example: Check logs from a <strong>MySQL<\/strong> container for failed login attempts.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>5. Log Analysis for Business Insights<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Extract and analyze logs to gain insights into <strong>user behavior<\/strong> or <strong>system performance<\/strong>.<\/li>\n\n\n\n<li>Example: Analyze web server logs to track page visits.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>6. CI\/CD Pipelines and Testing<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use logs to debug failed tests or builds in <strong>CI\/CD pipelines<\/strong>.<\/li>\n\n\n\n<li>Example: Check logs from a <strong>test runner container<\/strong> to identify why tests failed.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>List of Common <code>docker logs<\/code> Commands<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Command<\/strong><\/th><th><strong>Description<\/strong><\/th><\/tr><\/thead><tbody><tr><td><code>docker logs my_container<\/code><\/td><td>Show all logs from the container<\/td><\/tr><tr><td><code>docker logs -f my_container<\/code><\/td><td>Stream logs in real-time<\/td><\/tr><tr><td><code>docker logs -t my_container<\/code><\/td><td>Show logs with timestamps<\/td><\/tr><tr><td><code>docker logs --tail 100 my_container<\/code><\/td><td>Show the last 100 lines of logs<\/td><\/tr><tr><td><code>docker logs --since \"2023-02-07T12:00:00\" my_container<\/code><\/td><td>Show logs since a specific time<\/td><\/tr><tr><td><code>docker logs --since 10m my_container<\/code><\/td><td>Show logs from the last 10 minutes<\/td><\/tr><tr><td><code>docker logs -f --since 5m my_container<\/code><\/td><td>Stream logs in real-time from the last 5 minutes<\/td><\/tr><tr><td><code>docker logs my_stopped_container<\/code><\/td><td>View logs from a stopped container<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Best Practices for Using <code>docker logs<\/code>:<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Use <code>--tail<\/code> to avoid overwhelming output<\/strong>, especially for large logs.<\/li>\n\n\n\n<li><strong>Stream logs in real-time (<code>-f<\/code>)<\/strong> when monitoring services.<\/li>\n\n\n\n<li><strong>Combine with <code>--since<\/code> and <code>--timestamps<\/code><\/strong> for accurate debugging.<\/li>\n\n\n\n<li><strong>Centralize logs<\/strong> using tools like <strong>ELK (Elasticsearch, Logstash, Kibana)<\/strong> or <strong>Promtail\/Loki\/Grafana<\/strong> for better management and searchability.<\/li>\n\n\n\n<li><strong>Rotate logs regularly<\/strong> to avoid disk space issues (<code>log-opts<\/code> can help).<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Common Errors and Solutions<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>&#8220;No such container&#8221;<\/strong><br>\u2192 Ensure the container exists and is running\/stopped. Use <code>docker ps -a<\/code> to verify.<\/li>\n\n\n\n<li><strong>&#8220;Container is not writing logs&#8221;<\/strong><br>\u2192 Check the container\u2019s logging driver (<code>docker inspect<\/code>) to ensure it\u2019s set to <code>json-file<\/code> or another supported driver.<\/li>\n\n\n\n<li><strong>Logs are too large<\/strong><br>\u2192 Use <code>--tail<\/code> or <code>--since<\/code> to filter logs and reduce output size. Consider enabling <strong>log rotation<\/strong>.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Combining <code>docker logs<\/code> with Other Commands<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Check Logs and Restart a Container<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker logs my_app\ndocker restart my_app\n<\/code><\/span><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Monitor Logs and Check Resource Usage<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker logs -f my_app &amp;\ndocker stats my_app\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here\u2019s a complete tutorial on docker logs, explaining what it does, a comprehensive list of examples, and use cases. What is docker logs? docker logs is a Docker command used&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[4862],"tags":[],"class_list":["post-48407","post","type-post","status-publish","format-standard","hentry","category-docker"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=48407"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48407\/revisions"}],"predecessor-version":[{"id":48409,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48407\/revisions\/48409"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=48407"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=48407"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=48407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}