github.com/AliyunContainerService/cli@v0.0.0-20181009023821-814ced4b30d0/docs/reference/commandline/attach.md (about)

     1  ---
     2  title: "attach"
     3  description: "The attach command description and usage"
     4  keywords: "attach, running, container"
     5  ---
     6  
     7  <!-- This file is maintained within the docker/cli GitHub
     8       repository at https://github.com/docker/cli/. Make all
     9       pull requests against that repo. If you see this file in
    10       another repository, consider it read-only there, as it will
    11       periodically be overwritten by the definitive file. Pull
    12       requests which include edits to this file in other repositories
    13       will be rejected.
    14  -->
    15  
    16  # attach
    17  
    18  ```markdown
    19  Usage: docker attach [OPTIONS] CONTAINER
    20  
    21  Attach local standard input, output, and error streams to a running container
    22  
    23  Options:
    24        --detach-keys string   Override the key sequence for detaching a container
    25        --help                 Print usage
    26        --no-stdin             Do not attach STDIN
    27        --sig-proxy            Proxy all received signals to the process (default true)
    28  ```
    29  
    30  ## Description
    31  
    32  Use `docker attach` to attach your terminal's standard input, output, and error
    33  (or any combination of the three) to a running container using the container's
    34  ID or name. This allows you to view its ongoing output or to control it
    35  interactively, as though the commands were running directly in your terminal.
    36  
    37  > **Note:**
    38  > The `attach` command will display the output of the `ENTRYPOINT/CMD` process.  This
    39  > can appear as if the attach command is hung when in fact the process may simply
    40  > not be interacting with the terminal at that time.
    41  
    42  You can attach to the same contained process multiple times simultaneously,
    43  from different sessions on the Docker host.
    44  
    45  To stop a container, use `CTRL-c`. This key sequence sends `SIGKILL` to the
    46  container. If `--sig-proxy` is true (the default),`CTRL-c` sends a `SIGINT` to
    47  the container. You can detach from a container and leave it running using the
    48   `CTRL-p CTRL-q` key sequence.
    49  
    50  > **Note:**
    51  > A process running as PID 1 inside a container is treated specially by
    52  > Linux: it ignores any signal with the default action. So, the process
    53  > will not terminate on `SIGINT` or `SIGTERM` unless it is coded to do
    54  > so.
    55  
    56  It is forbidden to redirect the standard input of a `docker attach` command
    57  while attaching to a tty-enabled container (i.e.: launched with `-t`).
    58  
    59  While a client is connected to container's stdio using `docker attach`, Docker
    60  uses a ~1MB memory buffer to maximize the throughput of the application. If
    61  this buffer is filled, the speed of the API connection will start to have an
    62  effect on the process output writing speed. This is similar to other
    63  applications like SSH. Because of this, it is not recommended to run
    64  performance critical applications that generate a lot of output in the
    65  foreground over a slow client connection. Instead, users should use the
    66  `docker logs` command to get access to the logs.
    67  
    68  ### Override the detach sequence
    69  
    70  If you want, you can configure an override the Docker key sequence for detach.
    71  This is useful if the Docker default sequence conflicts with key sequence you
    72  use for other applications. There are two ways to define your own detach key
    73  sequence, as a per-container override or as a configuration property on  your
    74  entire configuration.
    75  
    76  To override the sequence for an individual container, use the
    77  `--detach-keys="<sequence>"` flag with the `docker attach` command. The format of
    78  the `<sequence>` is either a letter [a-Z], or the `ctrl-` combined with any of
    79  the following:
    80  
    81  * `a-z` (a single lowercase alpha character )
    82  * `@` (at sign)
    83  * `[` (left bracket)
    84  * `\\` (two backward slashes)
    85  *  `_` (underscore)
    86  * `^` (caret)
    87  
    88  These `a`, `ctrl-a`, `X`, or `ctrl-\\` values are all examples of valid key
    89  sequences. To configure a different configuration default key sequence for all
    90  containers, see [**Configuration file** section](cli.md#configuration-files).
    91  
    92  ## Examples
    93  
    94  ### Attach to and detach from a running container
    95  
    96  ```bash
    97  $ docker run -d --name topdemo ubuntu /usr/bin/top -b
    98  
    99  $ docker attach topdemo
   100  
   101  top - 02:05:52 up  3:05,  0 users,  load average: 0.01, 0.02, 0.05
   102  Tasks:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombie
   103  Cpu(s):  0.1%us,  0.2%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
   104  Mem:    373572k total,   355560k used,    18012k free,    27872k buffers
   105  Swap:   786428k total,        0k used,   786428k free,   221740k cached
   106  
   107  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
   108   1 root      20   0 17200 1116  912 R    0  0.3   0:00.03 top
   109  
   110   top - 02:05:55 up  3:05,  0 users,  load average: 0.01, 0.02, 0.05
   111   Tasks:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombie
   112   Cpu(s):  0.0%us,  0.2%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
   113   Mem:    373572k total,   355244k used,    18328k free,    27872k buffers
   114   Swap:   786428k total,        0k used,   786428k free,   221776k cached
   115  
   116     PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
   117         1 root      20   0 17208 1144  932 R    0  0.3   0:00.03 top
   118  
   119  
   120   top - 02:05:58 up  3:06,  0 users,  load average: 0.01, 0.02, 0.05
   121   Tasks:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombie
   122   Cpu(s):  0.2%us,  0.3%sy,  0.0%ni, 99.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
   123   Mem:    373572k total,   355780k used,    17792k free,    27880k buffers
   124   Swap:   786428k total,        0k used,   786428k free,   221776k cached
   125  
   126   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
   127        1 root      20   0 17208 1144  932 R    0  0.3   0:00.03 top
   128  ^C$
   129  
   130  $ echo $?
   131  0
   132  $ docker ps -a | grep topdemo
   133  
   134  7998ac8581f9        ubuntu:14.04        "/usr/bin/top -b"   38 seconds ago      Exited (0) 21 seconds ago                          topdemo
   135  ```
   136  
   137  ### Get the exit code of the container's command
   138  
   139  And in this second example, you can see the exit code returned by the `bash`
   140  process is returned by the `docker attach` command to its caller too:
   141  
   142  ```bash
   143      $ docker run --name test -d -it debian
   144  
   145      275c44472aebd77c926d4527885bb09f2f6db21d878c75f0a1c212c03d3bcfab
   146  
   147      $ docker attach test
   148  
   149      root@f38c87f2a42d:/# exit 13
   150  
   151      exit
   152  
   153      $ echo $?
   154  
   155      13
   156  
   157      $ docker ps -a | grep test
   158  
   159      275c44472aeb        debian:7            "/bin/bash"         26 seconds ago      Exited (13) 17 seconds ago                         test
   160  ```