When debugging, inspecting logs, or running commands inside a container, you’ll often need to access the container’s shell. Docker makes it easy to get inside a running container and interact with it directly—just like you would with a regular Linux environment.
In this blog post, you’ll learn how to open a shell inside a Docker container, with step-by-step commands and tips for different situations.
✅ Method 1: Using docker exec
with Interactive Shell
The most common and recommended way to get a shell inside a running container is by using:
docker exec -it <container-name-or-id> /bin/bash
📌 Example:
docker exec -it my_container /bin/bash
-i
: interactive mode-t
: allocate a pseudo-TTY (terminal)/bin/bash
: the shell you’re trying to access
💡 This works only if the container image has Bash installed (e.g., Ubuntu, Debian).
🐚 What If Bash Is Not Available?
Some containers (like Alpine Linux) don’t include Bash by default. In that case, try sh
:
docker exec -it <container-name-or-id> /bin/sh
Example:
docker exec -it alpine_container /bin/sh
✅ Method 2: Using docker attach
(Alternative Method)
You can also attach your terminal to a running container’s standard input/output:
docker attach <container-name-or-id>
However, docker attach
connects you to the main process, not necessarily a shell. It’s useful for containers running shell-like applications (e.g., an interactive Python shell or Node REPL).
⚠️ Press
Ctrl + P
thenCtrl + Q
to detach without stopping the container.
✅ Method 3: Start a New Container with Shell Access
If the container has stopped or you want to inspect an image interactively:
docker run -it <image-name> /bin/bash
Example:
docker run -it ubuntu /bin/bash
This runs a temporary container with an interactive shell. Use it for testing or exploring image contents.
🛠 How to Find Running Containers
Use the following command to list containers and get their IDs or names:
docker ps
Output:
CONTAINER ID IMAGE STATUS NAMES
123abc ubuntu Up 10 minutes my_container
Then use my_container
or 123abc
in your docker exec
command.
✅ Summary
Goal | Command Example |
---|---|
Open Bash shell in container | docker exec -it my_container /bin/bash |
Open shell if Bash isn’t available | docker exec -it my_container /bin/sh |
Attach to container’s main process | docker attach my_container |
Start new container with shell | docker run -it ubuntu /bin/bash |
🧠 Pro Tips
- Use
exit
to leave the container shell. - Use
Ctrl + P
thenCtrl + Q
to detach without stopping the container (when usingdocker attach
). - Combine
docker ps
withgrep
to quickly find containers:docker ps | grep my_app
Accessing a Docker container’s shell is essential for debugging, monitoring, and system administration. Whether you’re exploring filesystem structure, inspecting logs, or manually editing config files, the docker exec
command is your go-to tool.