{"id":48348,"date":"2025-02-08T08:08:03","date_gmt":"2025-02-08T08:08:03","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=48348"},"modified":"2025-07-12T05:40:12","modified_gmt":"2025-07-12T05:40:12","slug":"docker-attach","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/docker-attach\/","title":{"rendered":"Docker commands Guide &#8211; docker attach with examples"},"content":{"rendered":"\n<p>Here\u2019s a <strong>complete tutorial<\/strong> on <code>docker attach<\/code>, including <strong>how it works<\/strong>, its <strong>use cases<\/strong>, and a comprehensive list of <strong>examples<\/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 attach<\/code>?<\/strong><\/h2>\n\n\n\n<p><code>docker attach<\/code> connects your terminal to a <strong>running Docker container&#8217;s standard input (stdin), output (stdout), and error (stderr)<\/strong> streams. This means you can interact directly with the container&#8217;s process as if it were running in your local terminal.<\/p>\n\n\n\n<p><strong>Key Features of <code>docker attach<\/code>:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Real-time access to logs and console output.<\/li>\n\n\n\n<li>Allows interaction with processes that require input (e.g., shell, interactive services).<\/li>\n\n\n\n<li><strong>No new process<\/strong> is started in the container (unlike <code>docker exec<\/code>).<\/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\">attach<\/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>Options:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>--detach-keys<\/code>: Override the default key sequence to detach (default: <code>Ctrl-p + Ctrl-q<\/code>).<\/li>\n\n\n\n<li><code>--no-stdin<\/code>: Do not attach stdin (useful for viewing logs without interaction).<\/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>How <code>docker attach<\/code> Differs from Other Commands<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>docker exec<\/code><\/strong> \u2192 Starts a new process inside the container.<\/li>\n\n\n\n<li><strong><code>docker logs -f<\/code><\/strong> \u2192 Displays log output but does not allow interactive input.<\/li>\n\n\n\n<li><strong><code>docker attach<\/code><\/strong> \u2192 Connects to the main process of a running container with <strong>interactive input and output<\/strong>.<\/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 attach<\/code><\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Attaching to a Running Container<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker run -it --name my_container ubuntu\n<\/code><\/span><\/pre>\n\n\n<p>This starts an Ubuntu container with an interactive shell. If you detach using <code>Ctrl-p + Ctrl-q<\/code>, you can reattach:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker attach my_container\n<\/code><\/span><\/pre>\n\n\n<p>You\u2019ll be back in the container\u2019s shell.<\/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. Viewing Logs in Real-Time (Without Interacting)<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker attach --no-stdin my_container\n<\/code><\/span><\/pre>\n\n\n<p>This will display the container&#8217;s logs without accepting input. Useful for monitoring output.<\/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. Detaching Gracefully (<code>--detach-keys<\/code>)<\/strong><\/h3>\n\n\n\n<p>By default, you detach from the container using <code>Ctrl-p + Ctrl-q<\/code>. You can specify a custom key combination:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">docker attach --detach-keys=<span class=\"hljs-string\">\"ctrl-c\"<\/span> my_container\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>To detach, press <code>Ctrl-c<\/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>4. Attaching to Multiple Containers (One at a Time)<\/strong><\/h3>\n\n\n\n<p>If you have multiple containers running, you can attach to them one by one:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker ps\n<\/code><\/span><\/pre>\n\n\n<p>Sample output:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">CONTAINER ID   IMAGE      COMMAND   CREATED        STATUS       NAMES\nd1a6743c1234   ubuntu     bash      2 minutes ago Up 2 minutes my_container\nb2b5729c5678   nginx      nginx     5 minutes ago Up 5 minutes nginx_container\n<\/code><\/span><\/pre>\n\n\n<p>Attach to each one:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker attach my_container\ndocker attach nginx_container\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>5. Handling Stopped Containers<\/strong><\/h3>\n\n\n\n<p><code>docker attach<\/code> only works with running containers. If you try to attach to a stopped container, you\u2019ll get an error:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker attach stopped_container\n<\/code><\/span><\/pre>\n\n\n<p>Error:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-built_in\">Error<\/span>: No such container: stopped_container\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>You must start the container first:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker start stopped_container\ndocker attach stopped_container\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>6. Using Detached Mode with <code>docker run<\/code> and Reattaching Later<\/strong><\/h3>\n\n\n\n<p>Start a container in detached mode:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker run -dit --name my_detached_container ubuntu\n<\/code><\/span><\/pre>\n\n\n<p>Reattach at any time:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker attach my_detached_container\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>7. Attaching to a Container Running a Web Server<\/strong><\/h3>\n\n\n\n<p>If you have a container running an NGINX web server:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" 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\">run<\/span> <span class=\"hljs-selector-tag\">-d<\/span> <span class=\"hljs-selector-tag\">--name<\/span> <span class=\"hljs-selector-tag\">my_nginx<\/span> <span class=\"hljs-selector-tag\">-p<\/span> 8080<span class=\"hljs-selector-pseudo\">:80<\/span> <span class=\"hljs-selector-tag\">nginx<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><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>You can attach to monitor its logs:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker attach my_nginx\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>8. Troubleshooting with <code>docker attach<\/code><\/strong><\/h3>\n\n\n\n<p>If a container fails, you can attach to it to see the real-time output of the process and debug the problem.<\/p>\n\n\n\n<p>For example, with a Node.js container:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker run -d --name node_app my_node_image\ndocker attach node_app\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>9. Detach Without Stopping the Container<\/strong><\/h3>\n\n\n\n<p>While attached to the container:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Press <code>Ctrl-p + Ctrl-q<\/code><\/strong> (default) to detach without stopping it.<\/li>\n\n\n\n<li>Check the container is still running: <code>docker ps<\/code><\/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>Best Practices for Using <code>docker attach<\/code><\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Avoid using <code>docker attach<\/code> with containers running critical processes that may get interrupted if you accidentally close the terminal.<\/li>\n\n\n\n<li>Use <code>--no-stdin<\/code> when you just want to <strong>view logs<\/strong> and don\u2019t need to interact with the process.<\/li>\n\n\n\n<li>For debugging, combine <code>docker attach<\/code> with <code>docker logs<\/code> for maximum insight.<\/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 All <code>docker attach<\/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 attach my_container<\/code><\/td><td>Attach to a running container<\/td><\/tr><tr><td><code>docker attach --no-stdin my_container<\/code><\/td><td>View logs without sending input to the container<\/td><\/tr><tr><td><code>docker attach --detach-keys=\"ctrl-c\" my_container<\/code><\/td><td>Set a custom detach key combination<\/td><\/tr><tr><td><code>docker attach stopped_container<\/code><\/td><td>Throws an error (container must be running)<\/td><\/tr><tr><td><code>docker attach -h<\/code><\/td><td>View help for the <code>docker attach<\/code> command<\/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>Common Errors and Solutions<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>&#8220;Cannot attach to stopped container&#8221;<\/strong><br>\u2192 Start the container with <code>docker start<\/code>.<\/li>\n\n\n\n<li><strong>Session Freezes \/ No Response<\/strong><br>\u2192 Ensure the container process is running. Press <code>Ctrl-p + Ctrl-q<\/code> to detach safely.<\/li>\n\n\n\n<li><strong>Accidentally Interrupting Critical Processes<\/strong><br>\u2192 Use <code>docker logs<\/code> to monitor logs without risking interruption.<\/li>\n<\/ol>\n\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 attach, including how it works, its use cases, and a comprehensive list of examples. What is docker attach? docker attach connects your terminal to&#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-48348","post","type-post","status-publish","format-standard","hentry","category-docker"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48348","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=48348"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48348\/revisions"}],"predecessor-version":[{"id":48350,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48348\/revisions\/48350"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=48348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=48348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=48348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}