build: garbage collection page

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
CrazyMax 2022-10-29 19:08:45 +02:00
parent 165d961a7e
commit 1947becbc4
No known key found for this signature in database
GPG Key ID: 3248E46B6BB8C7F7
3 changed files with 112 additions and 17 deletions

View File

@ -1521,24 +1521,28 @@ manuals:
title: Kubernetes driver title: Kubernetes driver
- path: /build/building/drivers/remote/ - path: /build/building/drivers/remote/
title: Remote driver title: Remote driver
- path: /build/building/cache/ - sectiontitle: Cache
title: Optimizing builds with cache
- sectiontitle: Cache backends
section: section:
- path: /build/building/cache/backends/ - path: /build/building/cache/
title: Overview title: Optimizing builds with cache
- path: /build/building/cache/backends/inline/ - path: /build/building/cache/garbage-collection/
title: Inline title: Garbage collection
- path: /build/building/cache/backends/local/ - sectiontitle: Cache backends
title: Local section:
- path: /build/building/cache/backends/registry/ - path: /build/building/cache/backends/
title: Registry title: Overview
- path: /build/building/cache/backends/gha/ - path: /build/building/cache/backends/inline/
title: GitHub Actions title: Inline
- path: /build/building/cache/backends/azblob/ - path: /build/building/cache/backends/local/
title: Azure Blob Storage title: Local
- path: /build/building/cache/backends/s3/ - path: /build/building/cache/backends/registry/
title: Amazon S3 title: Registry
- path: /build/building/cache/backends/gha/
title: GitHub Actions
- path: /build/building/cache/backends/azblob/
title: Azure Blob Storage
- path: /build/building/cache/backends/s3/
title: Amazon S3
- path: /build/building/multi-stage/ - path: /build/building/multi-stage/
title: Multi-stage builds title: Multi-stage builds
- path: /build/building/multi-platform/ - path: /build/building/multi-platform/

View File

@ -0,0 +1,90 @@
---
title: Garbage collection
keywords: build, buildx, buildkit, garbage collection, prune
---
While [`docker build prune`](../../../engine/reference/commandline/builder_prune.md)
or [`docker buildx prune`](../../../engine/reference/commandline/buildx_prune.md)
commands run at once, garbage collection runs periodically and follows an
ordered list of prune policies.
Garbage collection runs in the BuildKit daemon. The daemon clears the build
cache when the cache size becomes too big, or when the cache age expires. The
following sections describe how you can configure both the size and age
parameters by defining garbage collection policies.
## Configuration
Depending on the [driver](../drivers/index.md) used by your builder instance,
the garbage collection will use a different configuration file.
If you're using the [`docker` driver](../drivers/docker.md), garbage collection
can be configured in the [Docker Daemon configuration](../../../engine/reference/commandline/dockerd.md#daemon-configuration-file).
file:
```json
{
"builder": {
"gc": {
"enabled": true,
"defaultKeepStorage": "10GB",
"policy": [
{"keepStorage": "10GB", "filter": ["unused-for=2200h"]},
{"keepStorage": "50GB", "filter": ["unused-for=3300h"]},
{"keepStorage": "100GB", "all": true}
]
}
}
}
```
For other drivers, garbage collection can be configured using the
[BuildKit configuration](../../buildkit/toml-configuration.md) file:
```toml
[worker.oci]
gc = true
gckeepstorage = 10000
[[worker.oci.gcpolicy]]
keepBytes = 512000000
keepDuration = 172800
filters = [ "type==source.local", "type==exec.cachemount", "type==source.git.checkout"]
[[worker.oci.gcpolicy]]
all = true
keepBytes = 1024000000
```
## Default policies
Default garbage collection policies are applied to all builders if not
already set:
```
GC Policy rule#0:
All: false
Filters: type==source.local,type==exec.cachemount,type==source.git.checkout
Keep Duration: 48h0m0s
Keep Bytes: 512MB
GC Policy rule#1:
All: false
Keep Duration: 1440h0m0s
Keep Bytes: 26GB
GC Policy rule#2:
All: false
Keep Bytes: 26GB
GC Policy rule#3:
All: true
Keep Bytes: 26GB
```
* `rule#0`: if build cache uses more than 512MB delete the most easily
reproducible data after it has not been used for 2 days.
* `rule#1`: remove any data not used for 60 days.
* `rule#2`: keep the unshared build cache under cap.
* `rule#3`: if previous policies were insufficient start deleting internal data
to keep build cache under cap.
> **Note**
>
> "Keep bytes" defaults to 10% of the size of the disk. If the disk size cannot
> be determined, it defaults to 2GB.

View File

@ -289,4 +289,5 @@ of continuing.)
For more information on using cache to do efficient builds, see: For more information on using cache to do efficient builds, see:
- [Garbage collection](garbage-collection.md)
- [Cache storage backends](./backends/index.md) - [Cache storage backends](./backends/index.md)