How to Enter a Docker Container Already Running with a New TTY
TLDR
To enter a running Docker container with a new TTY session, use the docker exec command with the -it flags. This allows you to interact with the container's shell for debugging or administrative tasks.
When working with Docker, you may need to interact with a running container to debug issues, inspect files, or perform administrative tasks. This guide will show you how to attach to a running container with a new TTY session.
Prerequisites
Before proceeding, make sure you have:
- Docker installed on your system.
- A running Docker container you want to access.
- Appropriate permissions to interact with Docker.
Step 1: List Running Containers
To identify the container you want to access, list all running containers using the following command:
docker ps
This will display a list of running containers, including their IDs, names, and other details. For example:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abc123 nginx:latest "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:8080->80/tcp my-nginx
Note the CONTAINER ID or NAMES of the container you want to access.
Step 2: Attach to the Container with a New TTY
To open a new TTY session in the running container, use the docker exec command with the -it flags:
docker exec -it <container-name-or-id> /bin/bash
Replace <container-name-or-id> with the CONTAINER ID or NAMES from the previous step. For example:
docker exec -it my-nginx /bin/bash
This command starts a new interactive shell session (/bin/bash) inside the container.
Example Output
root@abc123:/#
You are now inside the container and can run commands as if you were logged into a separate machine.
Step 3: Use an Alternative Shell (if Necessary)
Not all containers include /bin/bash. If the container uses a minimal base image, you may need to use /bin/sh instead:
docker exec -it <container-name-or-id> /bin/sh
For example:
docker exec -it my-nginx /bin/sh
Step 4: Exit the Container
To exit the container's shell session, type:
exit
This will close the TTY session and return you to your host machine's terminal.
Additional Tips
Inspect Container Logs: Use
docker logs <container-name-or-id>to view logs if you don't need an interactive session.Attach vs. Exec: The
docker attachcommand connects to the container's main process, whiledocker execstarts a new process inside the container.Use Docker Compose: If you're using Docker Compose, you can access a container with:
docker-compose exec <service-name> /bin/bash
By following these steps, you can easily interact with running Docker containers for debugging or administrative purposes.
We earn commissions when you shop through the links below.
DigitalOcean
Cloud infrastructure for developers
Simple, reliable cloud computing designed for developers
DevDojo
Developer community & tools
Join a community of developers sharing knowledge and tools
Acronis
The most secure backup
Acronis: the most secure backup solution for your data
Want to support DevOps Daily and reach thousands of developers?
Become a SponsorFound an issue?