Bird
Raised Fist0
Dockerdevops~5 mins

Executing commands with docker exec - Commands & Configuration

Choose your learning style10 modes available
Introduction
Sometimes you need to run a command inside a running container to check its status or fix something. The docker exec command lets you do that by opening a terminal inside the container or running a quick command.
When you want to check the logs or files inside a running container without stopping it
When you need to run a quick fix or update inside a container, like installing a package
When you want to open an interactive shell inside a container to explore or debug
When you want to run a command inside a container to check its environment or settings
When you want to test a command inside a container before adding it to the Dockerfile
Commands
This command starts a new nginx container in the background with the name example-nginx and maps port 8080 on your computer to port 80 inside the container.
Terminal
docker run -d --name example-nginx -p 8080:80 nginx:1.23.3
Expected OutputExpected
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6
→
-d - Run container in detached mode (in the background)
→
--name - Assign a name to the container for easy reference
→
-p - Map host port to container port
This runs the ls command inside the running example-nginx container to list the files in the default web folder.
Terminal
docker exec example-nginx ls /usr/share/nginx/html
Expected OutputExpected
50x.html index.html
This opens an interactive shell inside the example-nginx container so you can run commands manually.
Terminal
docker exec -it example-nginx sh
Expected OutputExpected
#
→
-i - Keep STDIN open even if not attached
→
-t - Allocate a pseudo-TTY for interactive shell
This command exits the interactive shell inside the container and returns you to your normal terminal.
Terminal
exit
Expected OutputExpected
No output (command runs silently)
Key Concept

If you remember nothing else from this pattern, remember: docker exec lets you run commands inside a running container without stopping it.

Common Mistakes
Trying to use docker exec on a container that is not running
docker exec only works on running containers and will give an error if the container is stopped
Make sure the container is running by using docker ps before running docker exec
Forgetting to use -it flags when opening an interactive shell
Without -it, you won't get a usable interactive terminal and commands may not work as expected
Always use docker exec -it when you want to open a shell inside the container
Using docker exec to run commands that require root but not specifying the user
The default user may not have permission to run some commands inside the container
Use the -u flag with docker exec to specify the root user if needed, e.g., docker exec -u 0 -it container_name sh
Summary
Start a container with docker run and give it a name for easy access.
Use docker exec to run commands inside the running container without stopping it.
Use docker exec -it to open an interactive shell inside the container for manual commands.

Practice

(1/5)
1. What does the docker exec command do?
easy
A. Runs a command inside a running container
B. Starts a new container from an image
C. Stops a running container
D. Builds a Docker image from a Dockerfile

Solution

  1. Step 1: Understand the purpose of docker exec

    The docker exec command is used to run commands inside an already running container without stopping it.
  2. Step 2: Compare with other Docker commands

    Starting a container is done with docker run, stopping with docker stop, and building images with docker build. These are different from docker exec.
  3. Final Answer:

    Runs a command inside a running container -> Option A
  4. Quick Check:

    docker exec = run command inside container [OK]
Hint: Remember: exec means execute inside running container [OK]
Common Mistakes:
  • Confusing exec with docker run
  • Thinking exec stops containers
  • Mixing exec with image build commands
2. Which of the following is the correct syntax to start an interactive bash shell inside a running container named webapp?
easy
A. docker exec webapp bash -it
B. docker exec bash -it webapp
C. docker exec -ti bash webapp
D. docker exec -it webapp bash

Solution

  1. Step 1: Recall the correct option order for docker exec

    The correct syntax places options like -it immediately after docker exec, then the container name, then the command.
  2. Step 2: Validate each option

    docker exec -it webapp bash correctly uses docker exec -it webapp bash. Options A, B, and C have incorrect order of arguments or options.
  3. Final Answer:

    docker exec -it webapp bash -> Option D
  4. Quick Check:

    Options come right after exec, then container, then command [OK]
Hint: Options (-it) come right after exec, before container name [OK]
Common Mistakes:
  • Placing options after container name
  • Swapping container name and command
  • Using wrong option order like -ti instead of -it
3. Given a running container named db, what will be the output of this command?
docker exec db ls /var/lib/mysql
medium
A. Shows an error because ls is not a valid command
B. Lists files on the host machine's /var/lib/mysql directory
C. Lists files and folders inside /var/lib/mysql in the container
D. Starts a new container named db and runs ls

Solution

  1. Step 1: Understand what docker exec does with ls /var/lib/mysql

    The command runs ls /var/lib/mysql inside the running container named db, listing files in that path inside the container.
  2. Step 2: Eliminate incorrect options

    ls is a valid command inside Linux containers, so no error. It does not list host files or start a new container.
  3. Final Answer:

    Lists files and folders inside /var/lib/mysql in the container -> Option C
  4. Quick Check:

    docker exec runs command inside container filesystem [OK]
Hint: Exec runs commands inside container, not on host [OK]
Common Mistakes:
  • Thinking exec runs commands on host
  • Assuming exec starts new containers
  • Believing ls is invalid inside containers
4. You run docker exec webapp bash but get the error: the input device is not a TTY. What is the likely fix?
medium
A. Stop the container and restart it
B. Add the -it flags to enable interactive terminal
C. Use docker run instead of docker exec
D. Remove the bash command from the exec

Solution

  1. Step 1: Understand the error about TTY

    The error means the command expects an interactive terminal but none was allocated.
  2. Step 2: Fix by adding -it flags

    Adding -it allocates a pseudo-TTY and keeps stdin open, enabling interactive shells inside containers.
  3. Final Answer:

    Add the -it flags to enable interactive terminal -> Option B
  4. Quick Check:

    Interactive shells need -it flags [OK]
Hint: Use -it for interactive commands to avoid TTY errors [OK]
Common Mistakes:
  • Ignoring the need for -it flags
  • Restarting container unnecessarily
  • Confusing exec with run command
5. You want to check the environment variables inside a running container named api. Which command correctly does this and shows output interactively?
hard
A. docker exec -it api env
B. docker exec env api
C. docker exec -it env api
D. docker exec api -it env

Solution

  1. Step 1: Identify the need for interactive output

    To see environment variables interactively, you need to allocate a TTY and keep stdin open using -it.
  2. Step 2: Check command syntax

    docker exec -it api env correctly places -it after docker exec, then container name api, then command env. Other options have wrong order or missing flags.
  3. Final Answer:

    docker exec -it api env -> Option A
  4. Quick Check:

    Use -it before container name for interactive commands [OK]
Hint: Place -it right after exec for interactive commands [OK]
Common Mistakes:
  • Placing -it after container or command
  • Omitting -it for interactive output
  • Swapping command and container name
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard