You signed in with another tab or window.Reload to refresh your session.You signed out in another tab or window.Reload to refresh your session.You switched accounts on another tab or window.Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _docs/kb/articles/upgrade-deprecated-docker-images.md
+73-96Lines changed: 73 additions & 96 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,48 +11,45 @@ categories: [Pipelines]
11
11
support-reviewed:2025-07-14 AA
12
12
---
13
13
14
-
As part of our ongoing platform upgrades, Codefresh is moving to a newer Classic Runner version based onDocker27. This change deprecates older Docker image formats such as Docker Image Format v1 and Docker manifest version 2, schema 1.
14
+
#How to: Upgrade DeprecatedDockerImages in Classic Pipelines
15
15
16
-
This guide walks you through:
17
-
- Identifying deprecated Docker images in your Classic Pipelines.
18
-
- Upgrading those images to a modern supported format (OCI or Docker manifest v2, schema 2).
16
+
As part of our ongoing platform upgrades, Codefresh is moving to a newer Classic runner version based on Docker v27. This version**deprecates Docker image format v1 and Docker manifest schema 1**, which may impact Classic Pipelines using these legacy image types.
19
17
20
-
##Step 1: Find Deprecated Docker Images
18
+
This guide will help you:
21
19
22
-
You can identify deprecated images using one of the following methods:
20
+
- Identify deprecated Docker images in your Classic Pipelines
21
+
- Upgrade those images to a supported format
23
22
24
-
###Option A: Analyze Build Logs (Manual Method)
23
+
---
24
+
25
+
##Step 1: Identify Deprecated Docker Images
25
26
26
-
The latest`dind` versions output a deprecation warning in the build log each time a deprecated image is pulled.
27
+
There are two recommended approaches:
27
28
28
-
**Pros**
29
-
- No setup required
30
-
- Works retroactively on historical builds
29
+
###Option 1: Analyze Build Logs
31
30
32
-
**Cons**
33
-
- Time-consuming for large accounts
34
-
- Requires script execution and manual review
31
+
This method scans historical build logs for deprecation warnings. The latest versions of`dind` log a warning each time the Docker daemon pulls a deprecated image.
35
32
36
-
Examplewarning in logs:
33
+
**Examplelog output:**
37
34
38
35
```
39
36
[DEPRECATION NOTICE] Docker Image Format v1 and Docker Image manifest version 2, schema 1 support is disabled by default...
40
37
```
41
38
42
-
Use the following script toscanyour buildlogs and extract deprecatedimages:
43
-
👉[Find deprecated images used in previous builds](https://gist.github.com/francisco-cocozza/6046028184cc12b5ee4513bdcb4217c5)
39
+
Toscan logs and extract deprecatedimage names, use the provided script:
40
+
➡️**Find deprecated images used in previous builds**
44
41
45
-
>💡 For large-scale environments withthousands ofbuilds,we offer a morescalable, metrics-baseddetectionmethod.See[Appendix I](#appendix-i-monitor-engine-metrics) for details.
42
+
>💡 For large-scale environments withmanybuilds,ascalable, metrics-based method is available.[See Appendix I](#appendix-i-monitor-engine-metrics) for details.
46
43
47
44
---
48
45
49
46
##Step 2: Upgrade Deprecated Docker Images
50
47
51
-
Once you’ve identified deprecated imagesusing enginemetrics, the next step is toupgradethose imagesto a modern format (OCI or Docker manifest v2, schema 2). Thisis required to ensurecompatibility with docker-27 and futurereleases.
48
+
Once you’ve identified deprecated images(via logs ormetrics),upgradethemto a modern format (OCI or Docker manifest v2, schema 2). Thisensurescompatibility with docker-27 and futurerunner versions.
52
49
53
-
###HowIt Works
50
+
###Howit works
54
51
55
-
Re-pushing an image using a modern Docker clientwillautomaticallyconvert its manifest to a supported version.
52
+
Re-pushing an image using a modern Docker client automaticallyupdates its manifest to a supported version.
56
53
57
54
###Sample Codefresh Pipeline to Upgrade an Image
58
55
@@ -69,40 +66,41 @@ steps:
69
66
image_name:<target-image-name>
70
67
```
71
68
69
+
**Example:**
70
+
72
71
```yaml
73
-
# Example:
74
-
# push:
75
-
# title: "Re-pushing deprecated image"
76
-
# type: push
77
-
# candidate: docker/whalesay:latest
78
-
# registry: docker
79
-
# tag: new-manifest
80
-
# image_name: codefresh/whalesay
72
+
push:
73
+
title:"Re-pushing deprecated image"
74
+
type:push
75
+
candidate:docker/whalesay:latest
76
+
registry:docker
77
+
tag:new-manifest
78
+
image_name:codefresh/whalesay
81
79
```
82
80
83
-
This pulls the deprecated image and re-pushes it under a new name/tag with a compliant manifest format.
81
+
This pulls the deprecated image and re-pushes it under a new name ortag with a compliant manifest format.
84
82
85
-
>💡You can repeatthis process for each deprecated image discovered via metrics or logs.
83
+
> 💡Repeatthis process for each deprecated image discovered.
86
84
87
85
---
88
86
89
87
## Appendix I: Monitor Engine Metrics
90
88
91
-
This method enables scalable detection of deprecated imagesbyusing real-time enginemetrics. Recommended for high-volume or automated environments.
89
+
For large environments, use real-time metrics emittedbythe Codefresh engineto detect deprecated image usage.
92
90
93
-
###Monitor engine metrics
91
+
###About the Metric
94
92
95
-
Starting from Runtime v7.5.0,engine emits:
93
+
Starting from Runtime`v7.5.0`, theengine emits the following Prometheus metric:
Installation of themonitoringstack is up to the customer and not covered by our support. The following is a basic setup example:
126
+
If nomonitoringsolution exists in your cluster, install the [kube-prometheus-stack](https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack) chart:
Open[http://localhost:3000](http://localhost:3000) and log in using the admin password retrieved above.
199
-
200
-
###Verifying metrics
189
+
Then access Grafana at `http://localhost:3000`.
201
190
202
-
To ensure that engine metrics are collected correctly, run a build on the monitored Runtime. InGrafana:
191
+
### Verify Metrics inGrafana
203
192
204
-
-Go to**Explore → Metrics**
193
+
-Navigate to **Explore → Metrics**
205
194
-Search for `codefresh_`
206
-
- Make sure the time range includes a running build
207
-
208
-
---
209
-
210
-
##Appendix II: Grafana dashboard
211
-
212
-
###How to use/understand metrics
213
-
214
-
The metric`codefresh_engine_deprecated_images_pulled_total` is a counter increased by 1 each time Docker daemon pulls a deprecated image. Labels`{account_name, pipeline_id, workflow, image_name}` allow grouping results.
215
-
216
-
###Dashboard setup
195
+
-Run a build to generate metric events
217
196
218
-
1. Download Dashboard JSON in APPENDIX II
219
-
2. Log in to Grafana
220
-
3. Go to**Dashboards → New → Import**
221
-
4. Upload the JSON
222
-
5. Select`Mimir API` as data source → Click**Import**