macOS · Docker Desktop & Colima

DockerSpace

Vezi ce ocupă Docker pe disc, pe proiecte — și șterge doar ce chiar nu mai folosești.

SwiftSwiftUIDockermacOS
scanare locală
ACTIVĂ
PARTAJATĂ
ORFANĂ
// 01 — problema

Docker adună zeci de gigaocteți în imagini, volume și cache de build. DockerSpace le grupează pe proiect, îți arată ce e în uz și ce nu, și îți dă curățenie per proiect în loc de tot-sau-nimic.

Docker nu-ți spune cine deține ce. Vezi 90 de imagini și 40 de volume, fără să știi care aparțin proiectului la care lucrezi și care au rămas de la unul terminat acum un an.

Alternativa e prune, care nu face distincția — sau ștergerea manuală, care cere să ții minte ce a creat fiecare.

// 02 — manifest

Ce face DockerSpace

01

Grupează containere, imagini, volume și cache de build pe proiect Compose

02

Clasifică fiecare resursă: activă, partajată, imagine de bază sau orfană

03

Curățenie per proiect, păstrând ce e folosit de alte proiecte

04

Imaginile în uz se identifică după identificatorul real, nu după nume

05

Recunoaște și containerele oprite, ca să nu-ți șteargă imaginea de sub ele

06

Ultima scanare rămâne pe disc — la deschidere vezi imediat starea

07

Funcționează cu Docker Desktop și cu Colima

// 03 — flux

Cum funcționează, pas cu pas

Șase pași, în ordinea în care se întâmplă. Nimic nu se șterge înainte de pasul 05.

01ScaneazăRulează local `docker ps -a`, `docker images -a`, `docker volume ls` și `docker system df -v` — nimic nu pleacă spre vreun server.
02GrupeazăCitește eticheta `com.docker.compose.project` de pe fiecare container, imagine și volum și le adună pe proiectul care le-a creat.
03ClasificăVerifică fiecare imagine după identificatorul ei real, nu după nume, contra containerelor pornite ȘI oprite. Fiecare volum primește una din cinci stări, nu doar „în uz” sau „orfan”.
04AratăNimic nu se șterge până nu alegi un proiect anume și confirmi.
05Curăță per proiectȘterge containerele, imaginile și volumele proprii ale acelui proiect, păstrând ce e folosit și de altele.
06Salvează stareaUltima scanare rămâne pe disc — la următoarea deschidere vezi imediat ce a găsit, fără să aștepți o scanare nouă.
// 04 — clasificare

Fiecare resursă e sortată înainte să fie ștearsă

Activă
Partajată
Orfană
// 05 — sub capotă

Detalii tehnice

terminal

$ docker system prune e o unealtă cu două stări: nu ștergi nimic, sau ștergi tot ce crede Docker că e nefolosit — inclusiv lucruri de care aveai nevoie.

DockerSpace scanează starea locală și o grupează pe proiectul din Compose care a creat-o. Pentru fiecare resursă îți spune dacă e activă, partajată între proiecte, imagine de bază, sau orfană — și abia apoi îți oferă ștergerea.

Imaginile în uz sunt identificate după identificatorul lor real, nu după nume, deci o imagine folosită de un container oprit nu se pierde. Curățenia per proiect șterge containerele, imaginile și volumele exclusive ale acelui proiect, păstrând ce e partajat.

Ultima scanare se păstrează pe disc, deci la deschidere vezi imediat starea de dinainte, fără să aștepți.

// 06 — încredere

De ce poți avea încredere

Patru lucruri verificabile în codul aplicației, fiecare cu fișierul din care a fost citit.

Potrivire după identificator real, nu după nume

O imagine e considerată „în uz” doar dacă identificatorul ei real apare printre containerele existente — pornite sau oprite. O imagine oprită nu dispare de sub tine.

Core/Classify.swift — classifyImage(), usedImageIDs.contains(img.id)

Cinci stări pentru fiecare volum, nu două

Un volum poate fi în uz, orfan cu etichetă de proiect, orfan anonim, „disputat” (scanarea proprie și filtrul Docker nu sunt de acord — rămâne în afara oricărei curățenii până se lămurește) sau „necunoscut”, când inspectarea a fost incompletă.

Core/Classify.swift — enum VolumeUsage

Cazul care a motivat corectura are testul lui

Suita acoperă parsarea etichetelor, clasificarea imaginilor și a volumelor — și include un test scris anume pentru imaginea de bază care fusese oferită spre ștergere, ca greșeala aia să nu se poată întoarce.

Tests/ — regresie dedicată pentru fe905f6

Verificarea actualizărilor e opțională

Aplicația include Sparkle pentru actualizări, dar verificarea automată e oprită implicit — se întâmplă doar când apeși tu „Check for Updates”.

App/Updater.swift + Info.plist, SUEnableAutomaticChecks = false

// 07 — ce nu face încă

Ce nu face încă

Site-ul vechi promitea și lucrurile de mai jos. În acest build, niciunul nu are o linie de cod.

Perioadă de probă cu un teardown gratuitNeînceput

Niciunul dintre aceste puncte nu e inclus în forma de azi a aplicației.

// 08 — cerințe

Cerințe

Sistem
macOS 14.0 sau mai nou
Package.swift — platforms: [.macOS(.v14)]
Docker
Docker Desktop sau Colima
Sources/…/DockerClient.swift
Rețea
Scanarea e locală; singurul apel de rețea e verificarea manuală de actualizări
App/Updater.swift, SUEnableAutomaticChecks = false
Licență
O singură plată, 24 € — neaplicată încă în cod
grep pe Sources/ — 0 rezultate de cod de licențiere
// 09 — întrebări

Întrebări

Nu. Scanarea rulează local, prin CLI-ul Docker de pe mașina ta. Singurul apel de rețea din aplicație e verificarea manuală de actualizări, și e oprită implicit.

Nu. O imagine e „în uz” dacă identificatorul ei real apare la un container — pornit sau oprit. Nu contează numele containerului sau al proiectului.

Rămâne „necunoscut”. Aplicația nu presupune că un volum e orfan doar pentru că nu a putut verifica — asta ar transforma un volum de bază de date live într-un fals orfan.

24 €, o singură plată. Aplicația verifică licența — cheia publică Ed25519 și verificatorul sunt în binarul care se descarcă de pe pagina asta.

Cu amândouă — aplicația citește direct din CLI-ul `docker`, indiferent ce rulează în spate.

// 10 — tehnologii
Swift
SwiftUI
Docker
macOS
// 11 — achiziție

DockerSpace

24 €

+ TVA, calculat la finalizare după țara ta

Activare

Cum activezi licența

Descarcă aplicația

Descarcă versiunea 0.7.4

2.7 MB

Deschide aplicația, mergi la Preferințe → Licență și lipește cheia primită pe email.