command: docker exec short: Run a command in a running container long: |- 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. COMMAND runs in the default directory of the container. If the underlying image has a custom directory specified with the WORKDIR directive in its Dockerfile, this directory is used instead. COMMAND must be an executable. A chained or a quoted command does not work. For example, `docker exec -it my_container sh -c "echo a && echo b"` works, work, but `docker exec -it my_container "echo a && echo b"` does not. usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...] pname: docker plink: docker.yaml options: - option: detach shorthand: d value_type: bool default_value: "false" description: 'Detached mode: run command in the background' deprecated: false experimental: false experimentalcli: false kubernetes: false swarm: false - option: detach-keys value_type: string description: Override the key sequence for detaching a container deprecated: false experimental: false experimentalcli: false kubernetes: false swarm: false - option: env shorthand: e value_type: list description: Set environment variables deprecated: false min_api_version: "1.25" experimental: false experimentalcli: false kubernetes: false swarm: false - option: env-file value_type: list description: Read in a file of environment variables deprecated: false min_api_version: "1.25" experimental: false experimentalcli: false kubernetes: false swarm: false - option: interactive shorthand: i value_type: bool default_value: "false" description: Keep STDIN open even if not attached deprecated: false experimental: false experimentalcli: false kubernetes: false swarm: false - option: privileged value_type: bool default_value: "false" description: Give extended privileges to the command deprecated: false experimental: false experimentalcli: false kubernetes: false swarm: false - option: tty shorthand: t value_type: bool default_value: "false" description: Allocate a pseudo-TTY deprecated: false experimental: false experimentalcli: false kubernetes: false swarm: false - option: user shorthand: u value_type: string description: 'Username or UID (format: [:])' deprecated: false experimental: false experimentalcli: false kubernetes: false swarm: false - option: workdir shorthand: w value_type: string description: Working directory inside the container deprecated: false min_api_version: "1.35" experimental: false experimentalcli: false kubernetes: false swarm: false examples: "### Run `docker exec` on a running container\n\nFirst, start a container.\n\n```console\n$ docker run --name mycontainer -d -i -t alpine /bin/sh\n```\n\nThis creates and starts a container named `mycontainer` from an `alpine` image\nwith an `sh` shell as its main process. The `-d` option (shorthand for `--detach`)\nsets the container to run in the background, in detached mode, with a pseudo-TTY\nattached (`-t`). The `-i` option is set to keep `STDIN` attached (`-i`), which\nprevents the `sh` process from exiting immediately.\n\nNext, execute a command on the container.\n\n```console\n$ docker exec -d mycontainer touch /tmp/execWorks\n```\n\nThis creates a new file `/tmp/execWorks` inside the running container\n`mycontainer`, in the background.\n\nNext, execute an interactive `sh` shell on the container.\n\n```console\n$ docker exec -it mycontainer sh\n```\n\nThis starts a new shell session in the container `mycontainer`.\n\n### Set environment variables for the exec process (--env, -e)\n\nNext, set environment variables in the current bash session.\n\nBy default, the `docker exec` command, inherits the environment variables that\nare set at the time the container is created. Use the `--env` (or the `-e` shorthand)\nto override global environment variables, or to set additional environment variables\nfor the process started by `docker exec`.\n\nThe example below creates a new shell session in the container `mycontainer` with\nenvironment variables `$VAR_A` and `$VAR_B` set to \"1\" and \"2\" respectively.\nThese environment variables are only valid for the `sh` process started by that\n`docker exec` command, and are not available to other processes running inside\nthe container.\n\n```console\n$ docker exec -e VAR_A=1 -e VAR_B=2 mycontainer env\nPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\nHOSTNAME=f64a4851eb71\nVAR_A=1\nVAR_B=2\nHOME=/root\n```\n\n### Set the working directory for the exec process (--workdir, -w)\n\nBy default `docker exec` command runs in the same working directory set when \nthe container was created.\n\n```console\n$ docker exec -it mycontainer pwd\n/\n```\n\nYou can specify an alternative working directory for the command to execute \nusing the `--workdir` option (or the `-w` shorthand):\n\n```console\n$ docker exec -it -w /root mycontainer pwd\n/root\n```\n\n\n### Try to run `docker exec` on a paused container\n\nIf the container is paused, then the `docker exec` command fails with an error:\n\n```console\n$ docker pause mycontainer\nmycontainer\n\n$ docker ps\n\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n482efdf39fac \ alpine \"/bin/sh\" 17 seconds ago Up 16 seconds (Paused) mycontainer\n\n$ docker exec mycontainer sh\n\nError response from daemon: Container mycontainer is paused, unpause the container before exec\n\n$ echo $?\n1\n```" deprecated: false experimental: false experimentalcli: false kubernetes: false swarm: false