Best Docker Container Commands You Aren’t Using
![Best docker container commands you aren't using](https://www.virtualizationhowto.com/wp-content/uploads/2024/07/Best-Docker-Container-Commands-You-Arent-Using-780x470.png)
Docker has a lot of functionality from the command line and has built-in commands that allow doing a lot of different things with your containers. However, there are several Docker commands that you may not be using and you should be. Let’s take a look at the best Docker container commands you aren’t using and see what these commands are and how you can use them.
Table of contents
Docker command line (Docker CLI)
The Docker engine allows you to work from the Docker command line to manage and administer your containers effectively across your containerized environment. Using Docker commands, you have an effective way to troubleshoot, administer, configure, and perform other operations with Docker containers, Docker image configuration, and others.
Most know about docker run and docker network commands as these are used to run containers from the command line. However, note the following list of basic Docker commands you may not be using:
- docker rm and docker rmi
- docker exec
- docker commit
- docker login
- docker pull
- docker push
- docker ps
- docker logs
- docker prune
- docker stats
Check out the official Docker command line documentation found here: Use the Docker command line | Docker Docs.
1. docker rm and docker rmi
The docker rm command gets rid of containers that are not running. You can use it to permanently delete a container and its data. The docker rmi command is specific to Docker images and gets rid of re images from the local Docker registry.
docker rm my_container
docker rm $(docker ps -a -q) # Remove all stopped containers
docker rmi my_image
docker rmi $(docker images -q) # Remove all images
Below we are stopping a container first (required before you can remove) and then removing it using the docker rm command.
If you want to remove unused images (have to not be referenced by any containers) you can use the docker rmi command.
2. docker exec
The docker exec command lets you to connect to a running container. You can use it to run a new command inside the running container. This allows you to execute commands inside the container without needing to start a new container from the image.
docker exec -it my_container /bin/bash # Open an interactive bash shell
docker exec my_container ls /app # List files in the /app directory
docker exec -d my_container touch /tmp/newfile # Run a command in detached mode
Below, we are listing out the contents of the var directory in our container we are exec’ing into.
3. docker commit
The docker commit command creates a new image from a currently running container. When you run the command, it captures the state of a container and saves it as a new image. If you started with a base container image but have made many configuration changes inside the container, this command will save those as a new image that you can docker run and have all those changes without starting from scratch.
docker commit my_container my_new_image
docker commit -m "Added new feature" my_container my_new_image
docker commit -a "Author Name" my_container my_new_image
Below, we are capturing a running nginx container as a new container image. When we run the docker image ls command, we can see the newly created container image.
4. docker login
The docker login command logs into a Docker registry or another self-hosted registry. When you log in your Docker client it can then work with Docker registries such as pulling and pushing images.
docker login # Prompts for username and password
docker login -u my_username -p my_password docker.io
docker login registry.example.com # Login to a custom registry
Below, I am logging into a self-hosted container registry I have running in the home lab.
5. docker pull
The docker pull command downloads an image from a Docker registry to your local machine. When you run the docker pull command, keep in mind it doesn’t spin up a new container. It only pulls a container image from which you can spin up a new container.
docker pull ubuntu # Pull the latest Ubuntu image
docker pull nginx:1.19 # Pull a specific version of the Nginx image
docker pull myrepo/myimage:latest # Pull an image from a custom repository
Here, we are pulling the latest nginx container image.
6. docker push
The docker push command uploads an image to a Docker registry. This publishes the image from your local machine to a remote repository.
docker push myrepo/myimage:latest
docker push registry.example.com/myrepo/myimage:latest
docker push my_username/myimage:1.0 # Push an image to Docker Hub
Below we are pushing an image from our local registry up to a self-hosted registry we are logged into.
7. docker ps
The docker ps command lists running containers. It shows information about all currently running containers on the system. If you want to see information about even stopped containers, you can use the “-a” parameter to list for all.
docker ps # List all running containers
docker ps -a # List all containers (running and stopped)
docker ps -q # List only container IDs
Below, we see all running containers on the Docker container host.
8. docker logs
The docker logs command gets the logs of a specific container. It shows the stdout and stderr output of the specified container.
docker logs my_container # Show logs of the container
docker logs -f my_container # Follow (tail) the logs of the container
docker logs --since "10m" my_container # Show logs from the last 10 minutes
9. docker prune
The docker prune command removes unused container data. It is a great command line command to help clean up unused containers, Docker volume objects, images, docker networks, and build cache from the command line interface. If you have disk space issues on your Docker container host, this is a great command to remember, especially the docker system prune -a -f command.
docker system prune # Remove all unused containers, networks, images, and build cache
docker container prune # Remove all stopped containers
docker image prune # Remove all unused images
10. docker stats
The docker stats command shows you a live stream of container resource usage statistics from the Docker daemon. It shows real-time information for each running container on CPU, memory, and network usage.
docker stats # Show stats for all running containers
docker stats my_container # Show stats for a specific container
docker stats --no-stream # Show one-time stats snapshot
11. docker restart
The docker restart command is a great command to know as it stops and then starts Docker containers. This command is useful for rebooting containers that need to be refreshed without having to remove and recreate them.
docker restart my_container # Restart a specific container
docker restart $(docker ps -q) # Restart all running containers
docker restart -t 30 my_container # Restart a container with a 30-second timeout
Below, we are restarting a running nginx container.
12. docker network
The docker network command manages Docker networks. With it you can create, inspect, connect, and remove networks. You can use it in setting up and managing network connectivity between containers.
docker network create my_network # Create a new network
docker network ls # List all networks
docker network inspect my_network # Inspect details of a specific network
docker network connect my_network my_container # Connect a container to a network
docker network rm my_network # Remove a network
Below, we are using the docker network ls command to list out all the available Docker networks configured on the Docker host.
Troubleshooting
If you have issues running Docker commands from the command line:
- Check and make sure you are part of the Docker users group. You can create this group and add your user using the command: sudo usermod -aG docker $USER && newgrp docker
Note the following command-specific troubleshooting:
docker rm and docker rmi
Issue: Error message “Conflict” or “No such container/image.”
- Solution: Make sure the container or image exists and is not running or in use. Use docker ps -a to list all containers and docker images to list all images. Stop any running containers with docker stop <container_id> before removing them.
docker exec
Issue: Error message “No such container.”
- Solution: Make sure the container is running using docker ps. Start the container if it’s not running with docker start <container_id>.
docker commit
Issue: Error message “No such container.”
- Solution: Make sure the container exists and is running using docker ps -a. Also make sure you have the correct container ID or name.
docker login
Issue: Authentication failure.
- Solution: Make sure the correct username and password are used. Verify your credentials by logging into the Docker registry website or your private self-hosted registry
docker pull
Issue: Error message “Repository not found” or “Network issues.”
- Solution: Make sure the image name and tag are correct. Check your network connection. Ensure you are logged in to the correct registry with docker login.
docker push
Issue: Error message “Denied” or “Repository does not exist.”
- Solution: Make sure you are logged in to the correct registry. Double-check that you have permission to push to the repository. Check the repository name and tag.
docker ps
Issue: No containers listed.
- Solution: Make sure you have running containers. Use docker ps -a to list all containers, including stopped ones.
docker logs
Issue: Error message “No such container.”
- Solution: Verify the container name or ID is correct. Make sure the container is running or has run in the past.
docker prune
Issue: Data not being pruned as expected.
- Solution: Make sure there are unused resources. Use specific prune commands like docker container prune, docker image prune, or docker volume prune to target specific resources.
docker stats
Issue: Error message “No such container.”
- Solution: Make sure the container is running using docker ps. Also, check the container name or ID is correct.
docker restart
Issue: Error message “No such container.”
- Solution: Check the container name or ID is correct. Use docker ps -a to list all containers and confirm the container exists.
docker network
Issue: Error message “Network not found” or “Network conflict.”
- Solution: Make sure the network name or ID is correct. Use docker network ls to list all networks. Check for any conflicting networks and remove them if necessary.
Wrapping up
Hopefully this Docker commands cheat sheet will help you to make better use of the Docker command line to manage your containerized environments running on top of Docker. There are a lot of great underutilized Docker commands that can greatly help with managing Docker containers. I especially like the docker logs and exec commands, along with the docker prune commands that can help reclaim massive amounts of disk space from Docker operations and stale container resources.