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 + PthenCtrl + Qto 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
exitto leave the container shell. - Use
Ctrl + PthenCtrl + Qto detach without stopping the container (when usingdocker attach). - Combine
docker pswithgrepto 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.