# docker container attach

**Descripción:** Conecta los flujos de entrada, salida y error estándar locales a un contenedor en ejecución


**Uso:** `docker container attach [OPTIONS] CONTAINER`

**Alias:** `docker attach`








## Descripción

Usa `docker attach` para conectar la entrada estándar, la salida y el error estándar de tu terminal
(o cualquier combinación de las tres) a un contenedor en ejecución utilizando el ID
o nombre del contenedor. Esto te permite ver su salida o controlarlo de forma interactiva, como
si los comandos se estuvieran ejecutando directamente en tu terminal.

> [!NOTE]
> El comando `attach` muestra la salida del proceso de las instrucciones `ENTRYPOINT` y
> `CMD` del contenedor. Esto puede hacer parecer que el comando attach está colgado, cuando en realidad
> el proceso simplemente puede no estar escribiendo ninguna salida en ese momento.

Puedes conectarte al mismo proceso de contenedor varias veces simultáneamente,
desde diferentes sesiones en el host de Docker.

Para detener un contenedor, usa `CTRL-c`. Esta secuencia de teclas envía `SIGKILL` al
contenedor. Si `--sig-proxy` es true (por defecto), `CTRL-c` envía un `SIGINT` al
contenedor. Si el contenedor se ejecutó con `-i` y `-t`, puedes desconectarte de él
y dejarlo en ejecución utilizando la secuencia de teclas `CTRL-p CTRL-q`.

> [!NOTE]
> Un proceso que se ejecuta como PID 1 dentro de un contenedor recibe un trato especial por parte de
> Linux: ignora cualquier señal con la acción predeterminada. Por lo tanto, el proceso
> no finaliza con `SIGINT` o `SIGTERM` a menos que esté programado para hacerlo.

No puedes redirigir la entrada estándar de un comando `docker attach` mientras
te conectas a un contenedor con TTY habilitada (usando las opciones `-i` y `-t`).

Mientras un cliente está conectado a la salida estándar/entrada (`stdio`) del contenedor mediante `docker attach`,
Docker utiliza un búfer de memoria de aproximadamente 1 MB para maximizar el rendimiento de la aplicación.
Una vez que este búfer está lleno, la velocidad de la conexión de la API se ve afectada, lo que a su vez
influye en la velocidad de escritura del proceso de salida. Esto es similar a otras
aplicaciones como SSH. Debido a esto, no se recomienda ejecutar aplicaciones
críticas para el rendimiento que generen mucha salida en primer plano a través de una conexión de cliente lenta.
En su lugar, usa el comando `docker logs` para acceder a los logs.


## Opciones

| Opción                                                        | Predeterminado                                        | Descripción                                                                                                                                    |
| ------------------------------------------------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|  | `--detach-keys` |  |  Sobrescribe la secuencia de teclas para desconectarse de un contenedor |

 | `--no-stdin` |  |  No conecta la entrada estándar (STDIN) |

 | `--sig-proxy` | `true` |  Redirige todas las señales recibidas al proceso |




## Ejemplos

### Conectarse a y desconectarse de un contenedor en ejecución

El siguiente ejemplo inicia un contenedor Alpine ejecutando `top` en modo detached, luego se conecta al contenedor:

```console
$ docker run -d --name topdemo alpine top -b

$ docker attach topdemo

Mem: 2395856K used, 5638884K free, 2328K shrd, 61904K buff, 1524264K cached
CPU:   0% usr   0% sys   0% nic  99% idle   0% io   0% irq   0% sirq
Load average: 0.15 0.06 0.01 1/567 6
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
    1     0 root     R     1700   0%   3   0% top -b
```

Como el contenedor se inició sin las opciones `-i` y `-t`, las señales se reenvían al proceso conectado, lo que significa que la secuencia predeterminada de teclas de desconexión `CTRL-p CTRL-q` no produce ningún efecto, pero presionar `CTRL-c` finaliza el contenedor:

```console
<...>
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
    1     0 root     R     1700   0%   7   0% top -b
^P^Q
^C

$ docker ps -a --filter name=topdemo

CONTAINER ID   IMAGE     COMMAND    CREATED          STATUS                       PORTS     NAMES
96254a235bd6   alpine    "top -b"   44 seconds ago   Exited (130) 8 seconds ago             topdemo
```

Repitiendo el ejemplo anterior, pero esta vez con las opciones `-i` y `-t` definidas:

```console
$ docker run -dit --name topdemo2 alpine /usr/bin/top -b
```

Ahora, al conectarse al contenedor y presionar `CTRL-p CTRL-q` ("read escape sequence"), la CLI de Docker gestiona la secuencia de desconexión y el comando `attach` se desconecta del contenedor. Al comprobar el estado del contenedor con `docker ps` se muestra que el contenedor todavía se está ejecutando en segundo plano:

```console
$ docker attach topdemo2

Mem: 2405344K used, 5629396K free, 2512K shrd, 65100K buff, 1524952K cached
CPU:   0% usr   0% sys   0% nic  99% idle   0% io   0% irq   0% sirq
Load average: 0.12 0.12 0.05 1/594 6
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
    1     0 root     R     1700   0%   3   0% top -b
read escape sequence

$ docker ps -a --filter name=topdemo2

CONTAINER ID   IMAGE     COMMAND    CREATED          STATUS          PORTS     NAMES
fde88b83c2c2   alpine    "top -b"   22 seconds ago   Up 21 seconds             topdemo2
```

### Obtener el código de salida del comando del contenedor

Y en este segundo ejemplo, puedes ver que el código de salida devuelto por el proceso `bash` también es devuelto por el comando `docker attach` a quien lo invocó:

```console
$ docker run --name test -dit alpine
275c44472aebd77c926d4527885bb09f2f6db21d878c75f0a1c212c03d3bcfab

$ docker attach test
/# exit 13

$ echo $?
13

$ docker ps -a --filter name=test

CONTAINER ID   IMAGE     COMMAND     CREATED              STATUS                       PORTS     NAMES
a2fe3fd886db   alpine    "/bin/sh"   About a minute ago   Exited (13) 40 seconds ago             test
```

### Sobrescribir la secuencia de desconexión (--detach-keys) {#detach-keys}

Usa la opción `--detach-keys` para sobrescribir la secuencia de teclas de Docker para la desconexión. Esto es útil si la secuencia predeterminada de Docker entra en conflicto con la secuencia de teclas que usas para otras aplicaciones. Hay dos formas de definir tu propia secuencia de teclas de desconexión: como una sobrescritura por contenedor o como una propiedad de configuración en toda tu configuración.

Para sobrescribir la secuencia de un contenedor individual, usa la flag `--detach-keys="<secuencia>"` con el comando `docker attach`. El formato de la `<secuencia>` es una letra [a-Z] o la combinación `ctrl-` con cualquiera de las siguientes:

* `a-z` (un solo carácter alfabético en minúscula)
* `@` (arroba)
* `[` (corchete izquierdo)
* `\\` (dos barras invertidas)
*  `_` (guion bajo)
* `^` (circunflejo)

Los valores `a`, `ctrl-a`, `X` o `ctrl-\\` son ejemplos de secuencias de teclas válidas. Para configurar una secuencia de teclas predeterminada diferente para todos los contenedores, consulta la [sección de archivo de configuración](/reference/cli/docker/#configuration-files).



