DOCKER(1) Docker User Manuals DOCKER(1)

# [NAME](#NAME)

docker-container-exec - Execute a command in a running container

# [SYNOPSIS](#SYNOPSIS)

**docker container exec \[OPTIONS] CONTAINER COMMAND \[ARG...]**

# [DESCRIPTION](#DESCRIPTION)

Run a process in a running container.

The command started using **docker exec** will only run while the container's primary process (**PID 1**) is running, and will not be restarted if the container is restarted.

If the container is paused, then the **docker exec** command will wait until the container is unpaused, and then run

# [CAPABILITIES](#CAPABILITIES)

**privileged** gives the process extended Linux capabilities ⟨https://man7.org/linux/man-pages/man7/capabilities.7.html⟩ when running in a container.

Without this flag, the process run by **docker exec** in a running container has the same capabilities as the container, which may be limited. Set **--privileged** to give all capabilities to the process.

# [USER](#USER)

**user** sets the username or UID used and optionally the groupname or GID for the specified command.

The following examples are all valid:  
\--user \[user | user:group | uid | uid:gid | user:gid | uid:group ]

Without this argument the command will be run as root in the container.

# [Exit Status](#Exit_Status)

The exit code from **docker exec** gives information about why the container failed to exec or why it exited. When **docker exec** exits with a non-zero code, the exit codes follow the **chroot** standard, see below:

**126 if the contained command cannot be invoked**

```
$ docker exec busybox /etc; echo $?
# exec: "/etc": permission denied


  docker: Error response from daemon: Contained command could not be invoked


  126
```

**127 if the contained command cannot be found**

```
$ docker exec busybox foo; echo $?
# exec: "foo": executable file not found in $PATH


  docker: Error response from daemon: Contained command not found or does not exist


  127
```

**Exit code of contained command otherwise**

```
$ docker exec busybox /bin/sh -c 'exit 3' 
# 3
```

# [OPTIONS](#OPTIONS)

**-d**, **--detach**\[=false] Detached mode: run command in the background

**--detach-keys**="" Override the key sequence for detaching a container

**-e**, **--env**= Set environment variables

**--env-file**= Read in a file of environment variables

**-i**, **--interactive**\[=false] Keep STDIN open even if not attached

**--privileged**\[=false] Give extended privileges to the command

**-t**, **--tty**\[=false] Allocate a pseudo-TTY

**-u**, **--user**="" Username or UID (format: "\[:]")

**-w**, **--workdir**="" Working directory inside the container

# [SEE ALSO](#SEE_ALSO)

[**docker-container(1)**](/man/enterprise-packages/docker-cli-fips/docker-container.1)

Oct 2026 Docker Community

---

Document: docker-container-exec(1) from docker-cli-fips 29.9.2-r0 (Chainguard OS)
Source: https://github.com/docker/cli
