Docker is a popular containerization platform that allows you to package, deploy, and run applications in a container. The `docker exec`
command allows you to run commands in a running Docker container. This can be useful for debugging, testing, and administering containers. In this article, we will go over how to use the docker exec command to run commands inside a running Docker container.
Running Commands in a Container
To run a command inside a Docker container, you can use the docker exec command followed by the container ID or container name, and the command you want to run.
For example, to run the ls command in a container with the ID “abcd12345”, you can use the following command:
docker exec abcd12345 ls
To run the ls command in a container with the name “mycontainer”, you can use the following command:
docker exec mycontainer ls
You can also run commands that take arguments by specifying the arguments after the command. For example, to run the `ls` command with the `-l` flag in a container with the ID “abcd12345 “, you can use the following command:
docker exec abcd12345 ls -l
You can find the container id and name using `docker ps`
command.
Running a Shell in a Container
You can also run a shell in a Docker container by specifying the shell executable as the command. For example, to run a bash shell in a container with the ID “abcd12345”, you can use the following command:
docker exec -it abcd12345 bash
The `-it` flag is used to allocate a pseudo-TTY and run the command in interactive mode. This allows you to enter commands in the shell and see the output.
You can also specify a different shell executable, such as csh, fish, dash, or zsh.
Running a Command as a Different User
By default, the docker exec command runs the command as the root user. However, you can specify a different user to run the command using the `-u` flag.
For example, to run the ls command as the www-data user in a container with the ID “abcd12345”, you can use the following command:
docker exec -u www-data abcd12345 ls
Conclusion
The `docker exec` command is a useful tool for running commands in a Docker container. It allows you to debug, test, and administer containers from the command line. By understanding how to use the docker exec command, you can easily run commands in a Docker container and manage your containers more effectively.