Docker, the de facto standard in containerization, provides an efficient way to package and distribute applications. As a developer or system administrator, there are times when you might need to get shell access to a running Docker container. This could be for debugging purposes, application management, or other various tasks.
This guide provides a step-by-step process on how to gain shell access to your running Docker containers.
Prerequisites
Before we delve into the process, ensure that you have Docker installed and running on your machine. This guide assumes you have a basic understanding of Docker concepts such as images, containers, and Dockerfiles.
Step 1: List Your Running Docker Containers
First, you need to identify the Docker container to which you want to get shell access. Docker provides a command that lists all your currently running containers:
docker ps
This command will display a table that includes the container ID, image name, command, creation time, status, ports, and the names of the running containers.
1 2 3 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 72ca2488b353 my_image "/entrypoint.sh /sta…" 7 hours ago Up 3 hours 0.0.0.0:8080->80/tcp my_container e7904c4c6eca mysql:5.7 "docker-entrypoint.s…" 7 hours ago Up 7 hours 0.0.0.0:3306->3306/tcp my_db |
Step 2: Getting Shell Access to the Docker Container
Once you have identified the Docker container you want to access, you can use the following Docker command to get a shell access:
1 | docker exec -it <container-id> /bin/bash |
In this command:
- exec is used to run a command in a running Docker container.
- -it option allows you to interact with the container. The ‘i’ is for ‘interactive’, and ‘t’ is for ‘tty’, which allocates a pseudo-TTY or terminal inside the container.
- <container-id> is the ID of the Docker container you want to access. Replace it with your actual container ID.
- /bin/bash starts a Bash shell inside the container. If Bash is not available, you can use /bin/sh instead.
Here’s an example:
docker exec -it e7904c4c6eca /bin/bash
Once the command is executed, your prompt should change to something similar to root@e7904c4c6eca:/#, indicating that you’re now inside the container.
Step 3: Interacting with the Docker Container
Once you have shell access, you can run any command inside the container. For instance, to list all files in the current directory, you can run the ls command:
ls -l
Step 4: Exiting the Docker Container
To exit the shell without stopping the Docker container, use the exit command:
exit
This command will end the shell session and return you to your host shell.
Conclusion
Gaining shell access to a running Docker container is a straightforward process. It allows you to interact with your applications and perform necessary debugging or management tasks. It’s important to remember that any changes you make inside the container will be lost once the container is removed unless those changes are in a volume.
Understanding how to interact with your Docker containers directly is a valuable skill for anyone working with containerized applications. With this guide, you should now be able to comfortably gain shell access to any of your running Docker containers.
1 Comment
Great Article !! Thanks for sharing..