github.com/khulnasoft/cli@v0.0.0-20240402070845-01bcad7beefa/docs/reference/commandline/image_prune.md (about)

     1  # image prune
     2  
     3  <!---MARKER_GEN_START-->
     4  Remove unused images
     5  
     6  ### Options
     7  
     8  | Name                  | Type     | Default | Description                                      |
     9  |:----------------------|:---------|:--------|:-------------------------------------------------|
    10  | `-a`, `--all`         |          |         | Remove all unused images, not just dangling ones |
    11  | [`--filter`](#filter) | `filter` |         | Provide filter values (e.g. `until=<timestamp>`) |
    12  | `-f`, `--force`       |          |         | Do not prompt for confirmation                   |
    13  
    14  
    15  <!---MARKER_GEN_END-->
    16  
    17  ## Description
    18  
    19  Remove all dangling images. If `-a` is specified, also remove all images not referenced by any container.
    20  
    21  ## Examples
    22  
    23  Example output:
    24  
    25  ```console
    26  $ docker image prune -a
    27  
    28  WARNING! This will remove all images without at least one container associated to them.
    29  Are you sure you want to continue? [y/N] y
    30  Deleted Images:
    31  untagged: alpine:latest
    32  untagged: alpine@sha256:3dcdb92d7432d56604d4545cbd324b14e647b313626d99b889d0626de158f73a
    33  deleted: sha256:4e38e38c8ce0b8d9041a9c4fefe786631d1416225e13b0bfe8cfa2321aec4bba
    34  deleted: sha256:4fe15f8d0ae69e169824f25f1d4da3015a48feeeeebb265cd2e328e15c6a869f
    35  untagged: alpine:3.3
    36  untagged: alpine@sha256:4fa633f4feff6a8f02acfc7424efd5cb3e76686ed3218abf4ca0fa4a2a358423
    37  untagged: my-jq:latest
    38  deleted: sha256:ae67841be6d008a374eff7c2a974cde3934ffe9536a7dc7ce589585eddd83aff
    39  deleted: sha256:34f6f1261650bc341eb122313372adc4512b4fceddc2a7ecbb84f0958ce5ad65
    40  deleted: sha256:cf4194e8d8db1cb2d117df33f2c75c0369c3a26d96725efb978cc69e046b87e7
    41  untagged: my-curl:latest
    42  deleted: sha256:b2789dd875bf427de7f9f6ae001940073b3201409b14aba7e5db71f408b8569e
    43  deleted: sha256:96daac0cb203226438989926fc34dd024f365a9a8616b93e168d303cfe4cb5e9
    44  deleted: sha256:5cbd97a14241c9cd83250d6b6fc0649833c4a3e84099b968dd4ba403e609945e
    45  deleted: sha256:a0971c4015c1e898c60bf95781c6730a05b5d8a2ae6827f53837e6c9d38efdec
    46  deleted: sha256:d8359ca3b681cc5396a4e790088441673ed3ce90ebc04de388bfcd31a0716b06
    47  deleted: sha256:83fc9ba8fb70e1da31dfcc3c88d093831dbd4be38b34af998df37e8ac538260c
    48  deleted: sha256:ae7041a4cc625a9c8e6955452f7afe602b401f662671cea3613f08f3d9343b35
    49  deleted: sha256:35e0f43a37755b832f0bbea91a2360b025ee351d7309dae0d9737bc96b6d0809
    50  deleted: sha256:0af941dd29f00e4510195dd00b19671bc591e29d1495630e7e0f7c44c1e6a8c0
    51  deleted: sha256:9fc896fc2013da84f84e45b3096053eb084417b42e6b35ea0cce5a3529705eac
    52  deleted: sha256:47cf20d8c26c46fff71be614d9f54997edacfe8d46d51769706e5aba94b16f2b
    53  deleted: sha256:2c675ee9ed53425e31a13e3390bf3f539bf8637000e4bcfbb85ee03ef4d910a1
    54  
    55  Total reclaimed space: 16.43 MB
    56  ```
    57  
    58  ### <a name="filter"></a> Filtering (--filter)
    59  
    60  The filtering flag (`--filter`) format is of "key=value". If there is more
    61  than one filter, then pass multiple flags (e.g., `--filter "foo=bar" --filter "bif=baz"`)
    62  
    63  The currently supported filters are:
    64  
    65  * until (`<timestamp>`) - only remove images created before given timestamp
    66  * label (`label=<key>`, `label=<key>=<value>`, `label!=<key>`, or `label!=<key>=<value>`) - only remove images with (or without, in case `label!=...` is used) the specified labels.
    67  
    68  The `until` filter can be Unix timestamps, date formatted
    69  timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed
    70  relative to the daemon machine’s time. Supported formats for date
    71  formatted time stamps include RFC3339Nano, RFC3339, `2006-01-02T15:04:05`,
    72  `2006-01-02T15:04:05.999999999`, `2006-01-02Z07:00`, and `2006-01-02`. The local
    73  timezone on the daemon will be used if you do not provide either a `Z` or a
    74  `+-00:00` timezone offset at the end of the timestamp.  When providing Unix
    75  timestamps enter seconds[.nanoseconds], where seconds is the number of seconds
    76  that have elapsed since January 1, 1970 (midnight UTC/GMT), not counting leap
    77  seconds (aka Unix epoch or Unix time), and the optional .nanoseconds field is a
    78  fraction of a second no more than nine digits long.
    79  
    80  The `label` filter accepts two formats. One is the `label=...` (`label=<key>` or `label=<key>=<value>`),
    81  which removes images with the specified labels. The other
    82  format is the `label!=...` (`label!=<key>` or `label!=<key>=<value>`), which removes
    83  images without the specified labels.
    84  
    85  > **Predicting what will be removed**
    86  >
    87  > If you are using positive filtering (testing for the existence of a label or
    88  > that a label has a specific value), you can use `docker image ls` with the
    89  > same filtering syntax to see which images match your filter.
    90  >
    91  > However, if you are using negative filtering (testing for the absence of a
    92  > label or that a label doesn't have a specific value), this type of filter
    93  > doesn't work with `docker image ls` so you cannot easily predict which images
    94  > will be removed. In addition, the confirmation prompt for `docker image prune`
    95  > always warns that all dangling images will be removed, even if you are using
    96  > `--filter`.
    97  
    98  The following removes images created before `2017-01-04T00:00:00`:
    99  
   100  ```console
   101  $ docker images --format 'table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.CreatedAt}}\t{{.Size}}'
   102  REPOSITORY          TAG                 IMAGE ID            CREATED AT                      SIZE
   103  foo                 latest              2f287ac753da        2017-01-04 13:42:23 -0800 PST   3.98 MB
   104  alpine              latest              88e169ea8f46        2016-12-27 10:17:25 -0800 PST   3.98 MB
   105  busybox             latest              e02e811dd08f        2016-10-07 14:03:58 -0700 PDT   1.09 MB
   106  
   107  $ docker image prune -a --force --filter "until=2017-01-04T00:00:00"
   108  
   109  Deleted Images:
   110  untagged: alpine:latest
   111  untagged: alpine@sha256:dfbd4a3a8ebca874ebd2474f044a0b33600d4523d03b0df76e5c5986cb02d7e8
   112  untagged: busybox:latest
   113  untagged: busybox@sha256:29f5d56d12684887bdfa50dcd29fc31eea4aaf4ad3bec43daf19026a7ce69912
   114  deleted: sha256:e02e811dd08fd49e7f6032625495118e63f597eb150403d02e3238af1df240ba
   115  deleted: sha256:e88b3f82283bc59d5e0df427c824e9f95557e661fcb0ea15fb0fb6f97760f9d9
   116  
   117  Total reclaimed space: 1.093 MB
   118  
   119  $ docker images --format 'table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.CreatedAt}}\t{{.Size}}'
   120  
   121  REPOSITORY          TAG                 IMAGE ID            CREATED AT                      SIZE
   122  foo                 latest              2f287ac753da        2017-01-04 13:42:23 -0800 PST   3.98 MB
   123  ```
   124  
   125  The following removes images created more than 10 days (`240h`) ago:
   126  
   127  ```console
   128  $ docker images
   129  
   130  REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   131  foo                 latest              2f287ac753da        14 seconds ago      3.98 MB
   132  alpine              latest              88e169ea8f46        8 days ago          3.98 MB
   133  debian              jessie              7b0a06c805e8        2 months ago        123 MB
   134  busybox             latest              e02e811dd08f        2 months ago        1.09 MB
   135  golang              1.7.0               138c2e655421        4 months ago        670 MB
   136  
   137  $ docker image prune -a --force --filter "until=240h"
   138  
   139  Deleted Images:
   140  untagged: golang:1.7.0
   141  untagged: golang@sha256:6765038c2b8f407fd6e3ecea043b44580c229ccfa2a13f6d85866cf2b4a9628e
   142  deleted: sha256:138c2e6554219de65614d88c15521bfb2da674cbb0bf840de161f89ff4264b96
   143  deleted: sha256:ec353c2e1a673f456c4b78906d0d77f9d9456cfb5229b78c6a960bfb7496b76a
   144  deleted: sha256:fe22765feaf3907526b4921c73ea6643ff9e334497c9b7e177972cf22f68ee93
   145  deleted: sha256:ff845959c80148421a5c3ae11cc0e6c115f950c89bc949646be55ed18d6a2912
   146  deleted: sha256:a4320831346648c03db64149eafc83092e2b34ab50ca6e8c13112388f25899a7
   147  deleted: sha256:4c76020202ee1d9709e703b7c6de367b325139e74eebd6b55b30a63c196abaf3
   148  deleted: sha256:d7afd92fb07236c8a2045715a86b7d5f0066cef025018cd3ca9a45498c51d1d6
   149  deleted: sha256:9e63c5bce4585dd7038d830a1f1f4e44cb1a1515b00e620ac718e934b484c938
   150  untagged: debian:jessie
   151  untagged: debian@sha256:c1af755d300d0c65bb1194d24bce561d70c98a54fb5ce5b1693beb4f7988272f
   152  deleted: sha256:7b0a06c805e8f23807fb8856621c60851727e85c7bcb751012c813f122734c8d
   153  deleted: sha256:f96222d75c5563900bc4dd852179b720a0885de8f7a0619ba0ac76e92542bbc8
   154  
   155  Total reclaimed space: 792.6 MB
   156  
   157  $ docker images
   158  
   159  REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
   160  foo                 latest              2f287ac753da        About a minute ago   3.98 MB
   161  alpine              latest              88e169ea8f46        8 days ago           3.98 MB
   162  busybox             latest              e02e811dd08f        2 months ago         1.09 MB
   163  ```
   164  
   165  The following example removes images with the label `deprecated`:
   166  
   167  ```console
   168  $ docker image prune --filter="label=deprecated"
   169  ```
   170  
   171  The following example removes images with the label `maintainer` set to `john`:
   172  
   173  ```console
   174  $ docker image prune --filter="label=maintainer=john"
   175  ```
   176  
   177  This example removes images which have no `maintainer` label:
   178  
   179  ```console
   180  $ docker image prune --filter="label!=maintainer"
   181  ```
   182  
   183  This example removes images which have a maintainer label not set to `john`:
   184  
   185  ```console
   186  $ docker image prune --filter="label!=maintainer=john"
   187  ```
   188  
   189  > **Note**
   190  >
   191  > You are prompted for confirmation before the `prune` removes
   192  > anything, but you are not shown a list of what will potentially be removed.
   193  > In addition, `docker image ls` doesn't support negative filtering, so it
   194  > difficult to predict what images will actually be removed.
   195  
   196  ## Related commands
   197  
   198  * [system df](system_df.md)
   199  * [container prune](container_prune.md)
   200  * [volume prune](volume_prune.md)
   201  * [network prune](network_prune.md)
   202  * [system prune](system_prune.md)