github.com/khulnasoft/cli@v0.0.0-20240402070845-01bcad7beefa/docs/reference/commandline/container_attach.md (about) 1 # attach 2 3 <!---MARKER_GEN_START--> 4 Attach local standard input, output, and error streams to a running container 5 6 ### Aliases 7 8 `docker container attach`, `docker attach` 9 10 ### Options 11 12 | Name | Type | Default | Description | 13 |:--------------------------------|:---------|:--------|:----------------------------------------------------| 14 | [`--detach-keys`](#detach-keys) | `string` | | Override the key sequence for detaching a container | 15 | `--no-stdin` | | | Do not attach STDIN | 16 | `--sig-proxy` | `bool` | `true` | Proxy all received signals to the process | 17 18 19 <!---MARKER_GEN_END--> 20 21 ## Description 22 23 Use `docker attach` to attach your terminal's standard input, output, and error 24 (or any combination of the three) to a running container using the container's 25 ID or name. This lets you view its output or control it interactively, as 26 though the commands were running directly in your terminal. 27 28 > **Note** 29 > 30 > The `attach` command displays the output of the container's `ENTRYPOINT` and 31 > `CMD` process. This can appear as if the attach command is hung when in fact 32 > the process may simply not be writing any output at that time. 33 34 You can attach to the same contained process multiple times simultaneously, 35 from different sessions on the Docker host. 36 37 To stop a container, use `CTRL-c`. This key sequence sends `SIGKILL` to the 38 container. If `--sig-proxy` is true (the default),`CTRL-c` sends a `SIGINT` to 39 the container. If the container was run with `-i` and `-t`, you can detach from 40 a container and leave it running using the `CTRL-p CTRL-q` key sequence. 41 42 > **Note** 43 > 44 > A process running as PID 1 inside a container is treated specially by 45 > Linux: it ignores any signal with the default action. So, the process 46 > doesn't terminate on `SIGINT` or `SIGTERM` unless it's coded to do so. 47 48 You can't redirect the standard input of a `docker attach` command while 49 attaching to a TTY-enabled container (using the `-i` and `-t` options). 50 51 While a client is connected to container's `stdio` using `docker attach`, 52 Docker uses a ~1MB memory buffer to maximize the throughput of the application. 53 Once this buffer is full, the speed of the API connection is affected, and so 54 this impacts the output process' writing speed. This is similar to other 55 applications like SSH. Because of this, it isn't recommended to run 56 performance-critical applications that generate a lot of output in the 57 foreground over a slow client connection. Instead, use the `docker logs` 58 command to get access to the logs. 59 60 ## Examples 61 62 ### Attach to and detach from a running container 63 64 The following example starts an Alpine container running `top` in detached mode, 65 then attaches to the container; 66 67 ```console 68 $ docker run -d --name topdemo alpine top -b 69 70 $ docker attach topdemo 71 72 Mem: 2395856K used, 5638884K free, 2328K shrd, 61904K buff, 1524264K cached 73 CPU: 0% usr 0% sys 0% nic 99% idle 0% io 0% irq 0% sirq 74 Load average: 0.15 0.06 0.01 1/567 6 75 PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 76 1 0 root R 1700 0% 3 0% top -b 77 ``` 78 79 As the container was started without the `-i`, and `-t` options, signals are 80 forwarded to the attached process, which means that the default `CTRL-p CTRL-q` 81 detach key sequence produces no effect, but pressing `CTRL-c` terminates the 82 container: 83 84 ```console 85 <...> 86 PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 87 1 0 root R 1700 0% 7 0% top -b 88 ^P^Q 89 ^C 90 91 $ docker ps -a --filter name=topdemo 92 93 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 94 96254a235bd6 alpine "top -b" 44 seconds ago Exited (130) 8 seconds ago topdemo 95 ``` 96 97 Repeating the example above, but this time with the `-i` and `-t` options set; 98 99 ```console 100 $ docker run -dit --name topdemo2 ubuntu:22.04 /usr/bin/top -b 101 ``` 102 103 Now, when attaching to the container, and pressing the `CTRL-p CTRL-q` ("read 104 escape sequence"), the Docker CLI is handling the detach sequence, and the 105 `attach` command is detached from the container. Checking the container's status 106 with `docker ps` shows that the container is still running in the background: 107 108 ```console 109 $ docker attach topdemo2 110 111 Mem: 2405344K used, 5629396K free, 2512K shrd, 65100K buff, 1524952K cached 112 CPU: 0% usr 0% sys 0% nic 99% idle 0% io 0% irq 0% sirq 113 Load average: 0.12 0.12 0.05 1/594 6 114 PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 115 1 0 root R 1700 0% 3 0% top -b 116 read escape sequence 117 118 $ docker ps -a --filter name=topdemo2 119 120 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 121 fde88b83c2c2 alpine "top -b" 22 seconds ago Up 21 seconds topdemo2 122 ``` 123 124 ### Get the exit code of the container's command 125 126 And in this second example, you can see the exit code returned by the `bash` 127 process is returned by the `docker attach` command to its caller too: 128 129 ```console 130 $ docker run --name test -dit alpine 131 275c44472aebd77c926d4527885bb09f2f6db21d878c75f0a1c212c03d3bcfab 132 133 $ docker attach test 134 /# exit 13 135 136 $ echo $? 137 13 138 139 $ docker ps -a --filter name=test 140 141 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 142 a2fe3fd886db alpine "/bin/sh" About a minute ago Exited (13) 40 seconds ago test 143 ``` 144 145 ### <a name="detach-keys"></a> Override the detach sequence (--detach-keys) 146 147 Use the `--detach-keys` option to override the Docker key sequence for detach. 148 This is useful if the Docker default sequence conflicts with key sequence you 149 use for other applications. There are two ways to define your own detach key 150 sequence, as a per-container override or as a configuration property on your 151 entire configuration. 152 153 To override the sequence for an individual container, use the 154 `--detach-keys="<sequence>"` flag with the `docker attach` command. The format of 155 the `<sequence>` is either a letter [a-Z], or the `ctrl-` combined with any of 156 the following: 157 158 * `a-z` (a single lowercase alpha character ) 159 * `@` (at sign) 160 * `[` (left bracket) 161 * `\\` (two backward slashes) 162 * `_` (underscore) 163 * `^` (caret) 164 165 These `a`, `ctrl-a`, `X`, or `ctrl-\\` values are all examples of valid key 166 sequences. To configure a different configuration default key sequence for all 167 containers, see [**Configuration file** section](https://docs.docker.com/engine/reference/commandline/cli/#configuration-files).