1- # attach
1+ # docker attach
22
33<!-- -MARKER_GEN_START-->
44Attach local standard input, output, and error streams to a running container
@@ -9,159 +9,12 @@ Attach local standard input, output, and error streams to a running container
99
1010### Options
1111
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 ` | | | Proxy all received signals to the process |
12+ | Name | Type | Default | Description |
13+ | :----------------| :---------| :--------| :----------------------------------------------------|
14+ | ` --detach-keys ` | ` string ` | | Override the key sequence for detaching a container |
15+ | ` --no-stdin ` | | | Do not attach STDIN |
16+ | ` --sig-proxy ` | | | Proxy all received signals to the process |
1717
1818
1919<!-- -MARKER_GEN_END-->
2020
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] ( cli.md#configuration-files ) .
0 commit comments