{"id":48448,"date":"2025-02-08T08:38:39","date_gmt":"2025-02-08T08:38:39","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=48448"},"modified":"2025-07-12T05:38:41","modified_gmt":"2025-07-12T05:38:41","slug":"docker-rmi","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/docker-rmi\/","title":{"rendered":"Docker commands Guide &#8211; docker rmi with examples"},"content":{"rendered":"\n<p>Here\u2019s a <strong>complete tutorial<\/strong> on <code>docker rmi<\/code>, including <strong>what it does<\/strong>, <strong>examples<\/strong>, and <strong>use cases<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What is <code>docker rmi<\/code>?<\/strong><\/h2>\n\n\n\n<p><code>docker rmi<\/code> is a Docker command used to <strong>remove Docker images<\/strong> from the local system. It helps in <strong>cleaning up unused images<\/strong> and managing disk space. You can remove <strong>individual images<\/strong>, <strong>multiple images<\/strong>, or <strong>dangling images<\/strong> (untagged).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Key Features:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Deletes both tagged and untagged images.<\/li>\n\n\n\n<li>Supports removing <strong>multiple images<\/strong> at once.<\/li>\n\n\n\n<li>Helps in <strong>freeing up disk space<\/strong>.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Basic Syntax<\/strong><\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">docker<\/span> <span class=\"hljs-selector-tag\">rmi<\/span> <span class=\"hljs-selector-attr\">&#91;OPTIONS]<\/span> <span class=\"hljs-selector-tag\">IMAGE<\/span> <span class=\"hljs-selector-attr\">&#91;IMAGE...]<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Options:<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>-f<\/code>, <code>--force<\/code>: Force remove an image, even if it\u2019s in use by a stopped container.<\/li>\n\n\n\n<li><code>--no-prune<\/code>: Do not remove dangling parent images (default is to remove them).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Examples of <code>docker rmi<\/code><\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Remove a Single Image by Tag<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">docker<\/span> <span class=\"hljs-selector-tag\">rmi<\/span> <span class=\"hljs-selector-tag\">nginx<\/span><span class=\"hljs-selector-pseudo\">:latest<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This removes the <code>nginx:latest<\/code> image.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Remove an Image by ID<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker rmi a1b2c3d4e5f6\n<\/code><\/span><\/pre>\n\n\n<p>You can use the image\u2019s unique ID to remove it.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. Remove Multiple Images<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">docker<\/span> <span class=\"hljs-selector-tag\">rmi<\/span> <span class=\"hljs-selector-tag\">nginx<\/span><span class=\"hljs-selector-pseudo\">:latest<\/span> <span class=\"hljs-selector-tag\">alpine<\/span><span class=\"hljs-selector-pseudo\">:3.14<\/span> <span class=\"hljs-selector-tag\">python<\/span><span class=\"hljs-selector-pseudo\">:3.9<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This removes the specified images in one command.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4. Force Remove an Image (<code>--force<\/code>)<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">docker<\/span> <span class=\"hljs-selector-tag\">rmi<\/span> <span class=\"hljs-selector-tag\">-f<\/span> <span class=\"hljs-selector-tag\">my_image<\/span><span class=\"hljs-selector-pseudo\">:latest<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This forcefully removes <code>my_image:latest<\/code>, even if it\u2019s in use by a stopped container.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>5. Remove Dangling Images<\/strong><\/h3>\n\n\n\n<p>Dangling images are untagged images that are no longer associated with any container.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">docker rmi $(docker images -f <span class=\"hljs-string\">\"dangling=true\"<\/span> -q)\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This removes all dangling images.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>6. Remove Images Created Before a Specific Image<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">docker rmi $(docker images --filter <span class=\"hljs-string\">\"before=nginx:latest\"<\/span> -q)\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This removes images created before the <code>nginx:latest<\/code> image.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>7. Remove Images Above a Certain Size<\/strong><\/h3>\n\n\n\n<p>List images larger than 500MB and remove them:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">docker images --filter <span class=\"hljs-string\">\"dangling=false\"<\/span> --format <span class=\"hljs-string\">\"{{.Repository}}:{{.Tag}} {{.Size}}\"<\/span> | awk <span class=\"hljs-string\">'$2+0 &gt; 500 {print $1}'<\/span> | xargs docker rmi\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>8. Remove All Images<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">docker rmi $(docker images -q)\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This removes all images from the local system.<\/p>\n\n\n\n<p><strong>Note:<\/strong> Be careful with this command\u2014it removes everything.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>9. Remove an Image and Its Parent Images<\/strong><\/h3>\n\n\n\n<p>By default, <code>docker rmi<\/code> removes parent images if they are no longer used by other images:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">docker<\/span> <span class=\"hljs-selector-tag\">rmi<\/span> <span class=\"hljs-selector-tag\">my_custom_image<\/span><span class=\"hljs-selector-pseudo\">:latest<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>10. Use <code>docker rmi<\/code> in a Cleanup Script<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">#!\/bin\/bash<\/span>\n<span class=\"hljs-comment\"># Remove all dangling images<\/span>\ndocker rmi $(docker images -q -f <span class=\"hljs-string\">\"dangling=true\"<\/span>)\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"Cleaned up dangling images.\"<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Use Cases for <code>docker rmi<\/code><\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Freeing Up Disk Space<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Regularly remove unused and dangling images to <strong>reclaim disk space<\/strong>.<\/li>\n\n\n\n<li>Example: Remove large intermediate build images after building the final image.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Cleaning Up After Testing<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Remove temporary or test images after they are no longer needed.<\/li>\n\n\n\n<li>Example: Clean up development images after integration tests.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. Managing Image Versions<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Remove outdated versions of images to prevent clutter.<\/li>\n\n\n\n<li>Example: Keep only the latest version of your application image and remove older ones.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4. Automating Image Cleanup<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Integrate <code>docker rmi<\/code> in <strong>CI\/CD pipelines<\/strong> to clean up old or untagged images.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>5. Reducing Build Times<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Remove intermediate build images to reduce storage usage and improve build performance.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>6. Preparing for Disaster Recovery<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Clean up unused images to simplify backup and recovery processes.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>List of Common <code>docker rmi<\/code> Commands<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Command<\/strong><\/th><th><strong>Description<\/strong><\/th><\/tr><\/thead><tbody><tr><td><code>docker rmi nginx:latest<\/code><\/td><td>Remove the <code>nginx:latest<\/code> image<\/td><\/tr><tr><td><code>docker rmi a1b2c3d4e5f6<\/code><\/td><td>Remove an image by ID<\/td><\/tr><tr><td><code>docker rmi nginx:latest alpine:3.14 python:3.9<\/code><\/td><td>Remove multiple images<\/td><\/tr><tr><td><code>docker rmi -f my_image:latest<\/code><\/td><td>Forcefully remove an image<\/td><\/tr><tr><td><code>docker rmi $(docker images -f \"dangling=true\" -q)<\/code><\/td><td>Remove all dangling images<\/td><\/tr><tr><td><code>docker rmi $(docker images --filter \"before=nginx:latest\" -q)<\/code><\/td><td>Remove images created before <code>nginx:latest<\/code><\/td><\/tr><tr><td><code>docker rmi $(docker images -q)<\/code><\/td><td>Remove all images<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Best Practices for Using <code>docker rmi<\/code>:<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Check image dependencies<\/strong> before removing to avoid breaking services.<\/li>\n\n\n\n<li><strong>Use <code>--filter<\/code> options<\/strong> to safely remove only specific types of images (e.g., dangling).<\/li>\n\n\n\n<li><strong>Regularly clean up unused images<\/strong> to avoid filling up disk space.<\/li>\n\n\n\n<li><strong>Be careful with <code>docker rmi $(docker images -q)<\/code><\/strong>, as it removes all images.<\/li>\n\n\n\n<li><strong>Automate image cleanup<\/strong> in scripts to maintain a clean environment.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Common Errors and Solutions<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>&#8220;Image is being used by a running container&#8221;<\/strong><br>\u2192 Stop and remove the container before removing the image: <code>docker stop my_container &amp;&amp; docker rm my_container &amp;&amp; docker rmi my_image<\/code><\/li>\n\n\n\n<li><strong>&#8220;No such image&#8221;<\/strong><br>\u2192 Ensure the image exists by checking with <code>docker images<\/code>.<\/li>\n\n\n\n<li><strong>&#8220;Permission denied&#8221;<\/strong><br>\u2192 Run the command with <code>sudo<\/code> or check user permissions.<\/li>\n\n\n\n<li><strong>&#8220;Failed to remove parent image&#8221;<\/strong><br>\u2192 The parent image is likely in use by another image. Use <code>docker images --filter<\/code> to identify dependencies.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Combining <code>docker rmi<\/code> with Other Commands<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Clean Up Old Images Automatically<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">docker images --filter <span class=\"hljs-string\">\"before=my_app:latest\"<\/span> -q | xargs docker rmi\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Clean Up Dangling Images<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">docker rmi $(docker images -f <span class=\"hljs-string\">\"dangling=true\"<\/span> -q)\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Check Disk Usage Before and After Cleanup<\/strong><\/h3>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">docker system df\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here\u2019s a complete tutorial on docker rmi, including what it does, examples, and use cases. What is docker rmi? docker rmi is a Docker command used to remove Docker images&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[4862],"tags":[],"class_list":["post-48448","post","type-post","status-publish","format-standard","hentry","category-docker"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48448","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=48448"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48448\/revisions"}],"predecessor-version":[{"id":48450,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48448\/revisions\/48450"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=48448"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=48448"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=48448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}