2016-10-14 18:30:36 -04:00
|
|
|
---
|
|
|
|
title: "exec"
|
|
|
|
description: "The exec command description and usage"
|
2016-11-03 18:48:30 -04:00
|
|
|
keywords: "command, container, run, execute"
|
2016-10-14 18:30:36 -04:00
|
|
|
---
|
2015-06-21 16:41:38 -04:00
|
|
|
|
|
|
|
# exec
|
|
|
|
|
2016-07-07 14:43:18 -04:00
|
|
|
```markdown
|
|
|
|
Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
|
2015-06-21 16:41:38 -04:00
|
|
|
|
2022-03-29 17:54:35 -04:00
|
|
|
Execute a command in a running container
|
2015-06-21 16:41:38 -04:00
|
|
|
|
2016-09-12 06:34:44 -04:00
|
|
|
Options:
|
2016-07-07 14:43:18 -04:00
|
|
|
-d, --detach Detached mode: run command in the background
|
2016-09-12 06:34:44 -04:00
|
|
|
--detach-keys Override the key sequence for detaching a container
|
2016-07-13 13:24:41 -04:00
|
|
|
-e, --env=[] Set environment variables
|
2020-06-29 18:32:44 -04:00
|
|
|
--env-file Read in a file of environment variables
|
2016-09-12 06:34:44 -04:00
|
|
|
--help Print usage
|
2016-07-07 14:43:18 -04:00
|
|
|
-i, --interactive Keep STDIN open even if not attached
|
2016-09-12 06:34:44 -04:00
|
|
|
--privileged Give extended privileges to the command
|
2016-07-07 14:43:18 -04:00
|
|
|
-t, --tty Allocate a pseudo-TTY
|
|
|
|
-u, --user Username or UID (format: <name|uid>[:<group|gid>])
|
2020-03-15 10:11:43 -04:00
|
|
|
-w, --workdir Working directory inside the container
|
2016-07-07 14:43:18 -04:00
|
|
|
```
|
2015-06-21 16:41:38 -04:00
|
|
|
|
2017-02-13 02:47:38 -05:00
|
|
|
## Description
|
2017-02-07 18:42:48 -05:00
|
|
|
|
2015-06-21 16:41:38 -04:00
|
|
|
The `docker exec` command runs a new command in a running container.
|
|
|
|
|
|
|
|
The command started using `docker exec` only runs while the container's primary
|
|
|
|
process (`PID 1`) is running, and it is not restarted if the container is
|
|
|
|
restarted.
|
|
|
|
|
2017-11-17 12:20:20 -05:00
|
|
|
COMMAND will run in the default directory of the container. If the
|
2017-04-25 20:54:06 -04:00
|
|
|
underlying image has a custom directory specified with the WORKDIR directive
|
|
|
|
in its Dockerfile, this will be used instead.
|
|
|
|
|
|
|
|
COMMAND should be an executable, a chained or a quoted command
|
|
|
|
will not work. Example: `docker exec -ti my_container "echo a && echo b"` will
|
|
|
|
not work, but `docker exec -ti my_container sh -c "echo a && echo b"` will.
|
|
|
|
|
2017-02-07 18:42:48 -05:00
|
|
|
## Examples
|
2015-06-21 16:41:38 -04:00
|
|
|
|
2017-02-07 18:42:48 -05:00
|
|
|
### Run `docker exec` on a running container
|
2015-06-21 16:41:38 -04:00
|
|
|
|
2017-02-07 18:42:48 -05:00
|
|
|
First, start a container.
|
2015-06-21 16:41:38 -04:00
|
|
|
|
2021-08-21 08:54:14 -04:00
|
|
|
```console
|
2017-02-07 18:42:48 -05:00
|
|
|
$ docker run --name ubuntu_bash --rm -i -t ubuntu bash
|
|
|
|
```
|
2015-06-21 16:41:38 -04:00
|
|
|
|
|
|
|
This will create a container named `ubuntu_bash` and start a Bash session.
|
|
|
|
|
2017-02-07 18:42:48 -05:00
|
|
|
Next, execute a command on the container.
|
|
|
|
|
2021-08-21 08:54:14 -04:00
|
|
|
```console
|
2017-02-07 18:42:48 -05:00
|
|
|
$ docker exec -d ubuntu_bash touch /tmp/execWorks
|
|
|
|
```
|
2015-06-21 16:41:38 -04:00
|
|
|
|
|
|
|
This will create a new file `/tmp/execWorks` inside the running container
|
|
|
|
`ubuntu_bash`, in the background.
|
|
|
|
|
2017-02-07 18:42:48 -05:00
|
|
|
Next, execute an interactive `bash` shell on the container.
|
|
|
|
|
2021-08-21 08:54:14 -04:00
|
|
|
```console
|
2017-02-07 18:42:48 -05:00
|
|
|
$ docker exec -it ubuntu_bash bash
|
|
|
|
```
|
2015-06-21 16:41:38 -04:00
|
|
|
|
|
|
|
This will create a new Bash session in the container `ubuntu_bash`.
|
2017-02-07 18:42:48 -05:00
|
|
|
|
2021-11-26 09:07:14 -05:00
|
|
|
Next, set environment variables in the current bash session.
|
2017-06-15 11:24:41 -04:00
|
|
|
|
2021-08-21 08:54:14 -04:00
|
|
|
```console
|
2021-11-26 09:07:14 -05:00
|
|
|
$ docker exec -it -e VAR_A=1 -e VAR_B=2 ubuntu_bash bash
|
2017-06-15 11:24:41 -04:00
|
|
|
```
|
|
|
|
|
2020-03-15 10:11:43 -04:00
|
|
|
This will create a new Bash session in the container `ubuntu_bash` with environment
|
2021-11-26 09:07:14 -05:00
|
|
|
variables `$VAR_A` and `$VAR_B` set to "1" and "2" respectively. Note that these
|
|
|
|
environment variables will only be valid on the current Bash session.
|
2017-06-15 11:24:41 -04:00
|
|
|
|
2017-12-01 02:26:18 -05:00
|
|
|
By default `docker exec` command runs in the same working directory set when container was created.
|
|
|
|
|
2021-08-21 08:54:14 -04:00
|
|
|
```console
|
2017-12-01 02:26:18 -05:00
|
|
|
$ docker exec -it ubuntu_bash pwd
|
|
|
|
/
|
|
|
|
```
|
|
|
|
|
|
|
|
You can select working directory for the command to execute into
|
|
|
|
|
2021-08-21 08:54:14 -04:00
|
|
|
```console
|
2017-12-01 02:26:18 -05:00
|
|
|
$ docker exec -it -w /root ubuntu_bash pwd
|
|
|
|
/root
|
|
|
|
```
|
|
|
|
|
2017-06-15 11:24:41 -04:00
|
|
|
|
2017-02-07 18:42:48 -05:00
|
|
|
### Try to run `docker exec` on a paused container
|
|
|
|
|
|
|
|
If the container is paused, then the `docker exec` command will fail with an error:
|
|
|
|
|
2021-08-21 08:54:14 -04:00
|
|
|
```console
|
2017-02-07 18:42:48 -05:00
|
|
|
$ docker pause test
|
|
|
|
|
|
|
|
test
|
|
|
|
|
|
|
|
$ docker ps
|
|
|
|
|
|
|
|
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
|
|
|
1ae3b36715d2 ubuntu:latest "bash" 17 seconds ago Up 16 seconds (Paused) test
|
|
|
|
|
|
|
|
$ docker exec test ls
|
|
|
|
|
|
|
|
FATA[0000] Error response from daemon: Container test is paused, unpause the container before exec
|
|
|
|
|
|
|
|
$ echo $?
|
|
|
|
1
|
|
|
|
```
|