diff --git a/src/platform.js b/src/platform.js index 0c49a7f05..e45577b13 100644 --- a/src/platform.js +++ b/src/platform.js @@ -102,20 +102,22 @@ async function pruneInfraImages() { const images = infra.baseImages.concat(Object.keys(infra.images).map(function (addon) { return infra.images[addon]; })); for (const image of images) { - let output = safe.child_process.execSync(`docker images --digests ${image.repo} --format "{{.ID}} {{.Repository}}:{{.Tag}}@{{.Digest}}"`, { encoding: 'utf8' }); + const output = safe.child_process.execSync(`docker images --digests ${image.repo} --format "{{.ID}} {{.Repository}}:{{.Tag}}@{{.Digest}}"`, { encoding: 'utf8' }); if (output === null) { debug(`Failed to list images of ${image}`, safe.error); throw safe.error; } - let lines = output.trim().split('\n'); - for (let line of lines) { + const lines = output.trim().split('\n'); + for (const line of lines) { if (!line) continue; - let parts = line.split(' '); // [ ID, Repo:Tag@Digest ] - if (image.tag === parts[1]) continue; // keep + const parts = line.split(' '); // [ ID, Repo:Tag@Digest ] + const normalizedTag = parts[1].replace('registry.ipv6.docker.com/', '').replace('registry-1.docker.io/', ''); + + if (image.tag === normalizedTag) continue; // keep debug(`pruneInfraImages: removing unused image of ${image.repo}: tag: ${parts[1]} id: ${parts[0]}`); - let result = safe.child_process.execSync(`docker rmi ${parts[0]}`, { encoding: 'utf8' }); + let result = safe.child_process.execSync(`docker rmi ${parts[1].replace(':', '')}`, { encoding: 'utf8' }); // the none tag has to be removed if (result === null) debug(`Error removing image ${parts[0]}: ${safe.error.mesage}`); } }