Si të krasitni burimet e papërdorura Docker
Docker ju lejon të paketoni shpejt aplikacionet tuaja si kontejnerë, duke bërë të mundur ekzekutimin e tyre kudo nga laptopi juaj në një re publike. Pasi të keni përdorur Docker për një kohë, mund të grumbulloni një numër të madh kontejnerësh, imazhesh dhe burimesh të tjera të tepërta. Ja si t'i rregulloni ato.
Docker zakonisht nuk fshin asgjë nëse nuk ia tregoni. Kjo do të thotë që imazhet që keni tërhequr dhe kontejnerët që keni krijuar ndoshta janë ende të varura në sistemin tuaj, edhe nëse nuk përdoren më.
Pasja e shumë burimeve të tepërta mund të çojë shpejt në përdorim të tepërt të diskut. Gjithashtu rezulton në rezultate shumë më të gjata kur renditni burimet në vijën e komandës, duke e bërë më të vështirë gjetjen e informacionit që kërkoni.
Shkurtimi i burimeve të varura
Një burim i varur është çdo objekt Docker që nuk shoqërohet aktualisht me një kontejner. Kjo përfshin imazhet Docker, rrjetet dhe vëllimet, si dhe kontejnerët e ndaluar. Në rastin e imazheve, një imazh është i varur nëse nuk është i etiketuar dhe nuk ka referenca.
Docker ofron një komandë të vetme për mbajtjen e shtëpisë për t'ju lejuar të pastroni të gjitha burimet e varura dhe kontejnerët e ndaluar. Nëse një burim nuk përdoret nga një kontejner që funksionon, ai do të fshihet.
docker system prune
Ekzekutimi i komandës shfaq një kërkesë konfirmimi që liston llojet e burimeve që duhen fshirë. Shkruani y
dhe shtypni Enter për të vazhduar me fshirjen. Mund ta çaktivizoni konfirmimin duke kaluar flamurin -f
ose --force
.
Vëllimet nuk hiqen si parazgjedhje. Fshirja e vëllimeve rrezikon humbjen e të dhënave të vazhdueshme që mund të dëshironi t'i mbani. Nëse dëshironi të hiqni vëllimet që nuk janë të lidhur me një kontejner, kaloni flamurin --volumes
për t'i përfshirë në operacion.
Mund të fshini edhe më shumë të dhëna imazhi duke kaluar flamurin -a
(ose --all
). Kjo do të bëjë që Docker të fshijë të gjitha imazhet të papërdorura, jo vetëm ato të varura pa referencë. Çdo imazh në sistemin tuaj do të fshihet, përveç nëse ka të paktën një kontejner që funksionon që e kërkon atë.
Përdorimi i filtrave gjatë krasitjes
Filtrat mund të përdoren me komandën prune
. Filtrimi ju jep më shumë kontroll mbi atë që fshihet. Aktualisht mbështeten dy filtra, deri
dhe vula kohore
.
deri
– Filtrideri
parandalon fshirjen e kontejnerëve, imazheve dhe rrjeteve të krijuara përpara një kohe të caktuar. Mund ta specifikoni orën në disa formate të ndryshme, si p.sh. një vulë kohore Unix në sekonda (p.sh.1614890000
) ose një varg të vulës kohore të formatuar me datë (p.sh.2021-03-04T20:30:00
).etiketë
– Filtrilabel
kufizon fshirjen kështu që vetëm burimet me një etiketë të caktuar fshihen. Etiketat mund të përdoren me kontejnerë, imazhe, rrjete dhe vëllime. Ju specifikoni etiketat silabel=key=value
(çelësi i barabartë me vlerën),label!=key=value
(çelësi jo i barabartë me vlerën),label= çelësi
(ka etiketën e dhënë) oselabel!=key
(nuk ka etiketën e dhënë).
Për të përdorur një filtër, kaloni atë në flamurin --filter
:
docker system prune --filter until=2021-03-04T20:30:00 --filter label=foo=bar
Kjo komandë do të fshinte burimet me etiketën foo=bar
që u krijuan përpara orës 20:30 më 4 mars. Çdo burim që nuk përputhet me këtë kriter do të lihej i paprekur.
Krasitja e llojeve të burimeve individuale
Nuk do t'ju duhet gjithmonë të përdorni docker system prune
. Docker ofron gjithashtu komanda më të grimcuara të krasitjes. Këto mund të përdoren kur dëshironi të hiqni vetëm një lloj burimi.
Flamujt --force
dhe --filter
të mbështetur nga docker system prune
zbatohen gjithashtu për komandat individuale të krasitjes të listuara më poshtë.
Kontejnerët e krasitjes
Komandat e përditshme Docker mund të rezultojnë shpejt në një numër të madh kontejnerësh të ndaluar. Problemi acarohet nëse docker ndërton
imazhe pa flamurin --rm
, pasi kjo bën që shtresat e ndërtimit ndërmjetës të mbahen.
Ekzekutoni docker container prune
për të pastruar kontejnerët e ndaluar. Kontejnerët e ndaluar nuk shfaqen kur përdorni docker ps
; për t'i parë ato, do t'ju duhet të përdorni docker ps -a
për të shfaqur të gjithë kontejnerët në sistemin tuaj.
Nëse dëshironi të hiqni një kontejner individual, përdorni komandën docker rm
duke kaluar ID-në e kontejnerit. Ju mund ta merrni këtë duke ekzekutuar docker ps
. Nëse kontejneri po funksionon, do t'ju duhet të përdorni flamurin --force
për ta fshirë atë.
Shkurtimi i imazheve
Përdorni docker image prune
për të hequr të gjitha imazhet e varura. Ashtu si docker system prune
, kjo do të ndikojë në imazhet që nuk janë të etiketuara ose nuk janë të referuara nga ndonjë kontejner.
Shtoni flamurin -a
për të fshirë të gjitha imazhet e papërdorura. Kjo do të pastrojë çdo imazh në sistemin tuaj që nuk kërkohet nga të paktën një kontejner. Imazhet e etiketuara do të përfshihen gjithashtu, duke ju lejuar të pastroni shpejt tërheqjet e vjetra nga Docker Hub.
Mund të hiqni një imazh specifik me komandën docker rmi
:
docker rmi wordpress:latest
Kur një imazh ka shumë etiketa, docker rmi
do të heqë etiketën e dhënë pa e fshirë imazhin. Ajo do të fshihet pasi të hiqet etiketa e fundit.
Rrjetet e krasitjes
Rrjetet doker nuk pastrohen automatikisht. Me kalimin e kohës, mund të përfundoni me një numër të madh të tyre. Kjo e rëndon sistemin tuaj me pajisje të tepërta të urës virtuale dhe hyrje në tabelën e kursit. Ekzekutoni docker network prune
për të shkatërruar çdo rrjet të papërdorur dhe për të rikthyer ndryshimet në konfigurimin e hostit tuaj.
Mund të fshini rrjete individuale duke ekzekutuar docker rm my-network
.
Vëllimet e krasitjes
Docker nuk do të fshijë kurrë një vëllim. Ata ruajnë të dhënat e vazhdueshme të krijuara nga kontejnerët tuaj, kështu që heqja e paqëllimshme mund të ketë pasoja shkatërruese. Vëllimet mund të ndahen gjithashtu nga kontejnerë të shumtë ose të lihen të fjetur gati për t'u bashkuar me një kontejner tjetër në të ardhmen.
Nëse dëshironi të krasitni vëllime të papërdorura, duhet të ekzekutoni docker volume prune
. Kjo do të fshijë çdo vëllim që nuk përdoret nga të paktën një kontejner. Vëllimet individuale mund të hiqen duke përdorur docker volume rm my-volume
.
Parandalimi i akumulimit në të ardhmen
Mund të minimizoni rrezikun e grumbullimit të burimeve të tepërta në të ardhmen duke u kujdesur që të kaloni flamurin --rm
te docker build
dhe docker run
komandat.
Kur përdoret me build
, do të shkaktojë fshirjen e shtresave ndërmjetëse të ndërtimit (të shënuara si
në imazhet docker
) . Kjo mund të përfaqësojë një reduktim të ndjeshëm në përdorimin e diskut. Një shtresë e re ndërmjetëse krijohet normalisht për çdo udhëzim në Dockerfile
tuaj. Zakonisht mund t'i hiqni ato nëse nuk keni ndërmend t'i përdorni më vonë si pikënisje për një imazh të ri.
Përdorimi i --rm
me docker run
do të heqë kontejnerin sapo të dalë komanda e tij. Kjo është ideale kur ekzekutoni një binar në një enë me përdorim të vetëm. Mos ia kaloni --rm
kontejnerëve që keni ndërmend t'i përdorni vazhdimisht, ose që mund të dëshironi t'i nisni dhe t'i ndaloni sipas kërkesës. Shembujt përfshijnë serverët e uebit dhe bazës së të dhënave që ekzekutojnë një shërbim në vend të një komande të dhënë nga përdoruesi.
konkluzioni
Shkurtimi i burimeve tuaja Docker mund të çlirojë hapësirën në disk dhe t'ju ndihmojë të punoni me Docker CLI. Eliminimi i kontejnerëve dhe imazheve të tepërta e bën më të lehtë identifikimin e burimeve që po kërkoni.
Docker nuk do të fshijë asgjë nëse nuk ia tregoni. Ia vlen të ekzekutoni periodikisht docker system prune
për ta mbajtur sistemin tuaj të pastër. Mund të krijoni një detyrë cron që e ekzekuton atë çdo muaj, duke përdorur filtrin deri
për të krijuar një periudhë ruajtjeje për burimet e shtuara së fundi.