Introduction
As you use Docker more and more, you will accumulate more and more image layers and containers. Images can exceed gigabytes in size. Stopped containers tend not to use a significant amount of disk space, but can pollute the output from some Docker commands. You will learn how to reclaim the space from unneeded images and clear out needed space in this Lab Step.
Instructions
- Get an understanding of how much space is being used with the following system management command:
Copy code
docker system df
alt
This breaks down the disk usage into images and containers. Images are taking up the majority of the space.
- To see which images are taking up the most space, enter:
Copy code
docker images
alt
The flask-content-advisor and python images are both around 700MB. That's because the flask-content-advisor image is built on top of the python image. The difference between the two is how much additional space was added when you built the image using a Dockerfile. Notice that the output from df is smart enough to not double count the layers since they are shared between the images.
- You can get more informtation on the size of containers with the following command:
Copy code
docker ps -a -s
alt
The -s includes an extra column at the end showing the size of the container layer and the virtual size. The virtual size includes the image size and the container layer size.
- To remove the stopped web-server container, enter:
Copy code
docker rm web-server
The container must be stopped for you to be able to remove it. Confirm it has been removed with docker ps -a.
- The nginx image can now be removed because there are no containers depending upon it:
Copy code
docker rmi nginx:1.12
Each layer in the image is deleted. If there were image layers shared with other images that were used by containers, Docker would be smart enough to only remove the layers not being used. You will observe this now.
- Run a container based on the Python 3 image:
Copy code
docker run --name waiter -d -t python:3 python -c 'a = input("a")'
This will run a container that will endlessly wait for someone to input the value of a variable. This is an example of not using the default command of an image. The command in this case is everything after the image: python -c 'a = input("a")'. The Python 3 image is the base layer of the flask-content-advisor image you built.
- List all the containers:
Copy code
docker ps -a
alt
Notice the waiter container has a STATUS of Up, meaning it is running.
- Remove the advisor container:
Copy code
docker rm advisor
Now you have one container using the Python 3 image, but none using the flask-content-advisor image.
- Remove the flask-content-advisor image:
Copy code
docker rmi flask-content-advisor
This displays a delete output for each layer that is no longer being used. There are 8 layers deleted in total.
- Verify that the Python 3 image wasn't touched by the operation:
Copy code
docker images
alt
- To clean up everything not running, enter:
Copy code
docker system prune -a -f
alt
This prunes all containers and images that aren't used by running containers. This is a convenient way to clean up if you haven't been regularly removing unused images and containers. Verify that only the one running Python 3 container and its image are left with docker system df.
Summary
In this Lab Step, you learned how to measure the disk usage of Docker and clean up after you no longer need images and containers. You are able to delete images and containers manually or automatically using the prune system management command.
Top comments (0)