Search code examples
dockerkubernetesdocker-desktop

How to delete a docker image?


My project includes a Dockerfile to build an image. I've made modifications to that Dockerfile and want to see if it works. So i closed my program and listed all docker images in powershell using docker image ls -a. I deletetd all unused images using docker rmi -f $(docker images -a -q) and docker image prune -a.

But my image keeps not getting deleted, but simply 'untagged':

Untagged: my_image:latest
Untagged: my_image@sha256:16eb92a476be0...

All containers are stopped and deleted before trying to remove the image.
When i restart my application to build a new image, the old one keeps getting used:

> docker image ls -a
REPOSITORY                     TAG           IMAGE ID            CREATED      
/my_image                      latest        0d79904a74b0        2 months ago

How do i actually physically remove the old image so my application can build a new one?


Solution

  • At first, you need to delete/stop the running container that is using your image(which one you want to remove).

    • docker ps -a: To see all the running containers in your machine.
    • docker stop <container_id>: To stop a running container.
    • docker rm <container_id>: To remove/delete a docker container(only if it stopped).
    • docker image ls: To see the list of all the available images with their tag, image id, creation time and size.
    • docker rmi <image_id>: To delete a specific image.
    • docker rmi -f <image_id>: To delete a docker image forcefully
    • docker rm -f (docker ps -a | awk '{print$1}'): To delete all the docker container available in your machine
    • docker image rm <image_name>: To delete a specific image

    To remove the image, you have to remove/stop all the containers which are using it.

    • docker system prune -a: To clean the docker environment, removing all the containers and images.