docker-container-exec - Man Page
Execute a command in a running container
Examples (TL;DR)
- Enter an interactive shell session on an already-running container:
docker [exec|container exec] [-it|--interactive --tty] container_name /bin/bash - Run a command in the background (detached) on a running container:
docker [exec|container exec] [-d|--detach] container_name command - Select the working directory for a given command to execute into:
docker [exec|container exec] [-it|--interactive --tty] [-w|--workdir] path/to/directory container_name command - Run a command in background on existing container but keep
stdinopen:docker [exec|container exec] [-i|--interactive] [-d|--detach] container_name command - Set an environment variable in a running Bash session:
docker [exec|container exec] [-it|--interactive --tty] [-e|--env] variable_name=value container_name /bin/bash - Run a command as a specific user:
docker [exec|container exec] [-u|--user] user container_name command
Synopsis
docker container exec [Options] CONTAINER COMMAND [ARG...]
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
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 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 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
-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