Scroll to navigation

DOCKER(1) Docker User Manuals DOCKER(1)


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


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


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


privileged gives the process extended Linux capabilities ⟨⟩ 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 sets the username or UID used and optionally the groupname or GID for the specified command.

The followings 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

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

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

Exit code of contained command otherwise

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


-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

-h, --help[=false] help for exec

-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



May 2024 Docker Community