පැරණි ඩෝකර් බහාලුම් ඉවත් කරන්නේ කෙසේද?


1243

මෙම ප්‍රශ්නය සම්බන්ධයි අතිරික්ත, ධාවනය නොවන, ඩොකර් බහාලුම් ගැන මා සැලකිලිමත් විය යුතුද? .

මම කල්පනා කරන්නේ පැරණි බහාලුම් ඉවත් කරන්නේ කෙසේද යන්නයි. මෙම docker rm 3e552code34aඔබ තනි එක් ඉවත් ඉඩ දෙනවා, නමුත් මම දැනටමත් ගොඩක් තියෙනවා. docker rm --helpතේරීමේ විකල්පයක් ලබා නොදේ (සියල්ල මෙන්, හෝ රූප නාමයෙන්).

සමහර විට මෙම බහාලුම් ගබඩා කර ඇති නාමාවලියක් තිබේ නම් ඒවා පහසුවෙන් අතින් මකා දැමිය හැකිද?


21
අනාථ ඩොකර් පරිමාවන් පිරිසිදු කිරීම ගැනද ඔබ සලකා බැලිය යුතුය. පැරණි බහාලුම් හා පැරණි රූපවලට වඩා වැඩි ඉඩ ප්‍රමාණයක් ඔවුන් පරිභෝජනය කරන බව මට බොහෝ විට පෙනේ. අනාථ ඩොකර් වෙළුම් ඉවත් කිරීම සඳහා හොඳ පිටපතක් ලබා ගත හැකිය: github.com/chadoe/docker-cleanup-volumes .
නෙමන්ජා ට්‍රිෆුනොවික්

සමහර විට github.com/chadoe/docker-cleanup-volumes ඔබට උදව් විය හැකිය.
මිහයි 8

ඔබට ධජය docker runසමඟ භාවිතා --rmකළ හැකි අතර එමඟින් බහාලුම් කාලානුරූපී වන අතර ධාවනයෙන් පසු සියලුම බහාලුම් ගොනු ඉවත් කරනු ලැබේ.
ගෝර්ඩන්

12
ඩොකර් 1.13 (Q4 2016) සමඟ, ඔබට නව docker system pruneවිධානය ද සලකා බැලිය හැකිය . බලන්න මගේ පිළිතුර පහත .
VonC

1
ඩොකර් කළමණාකරණ මෙවලම භාවිතා කරන්න මෙම මෙවලම භාවිතා කිරීමෙන් Portainer අපට කළමනාකරණය කළ හැකිය ඩොකර් සඳහා all the old containers, non using volumes and imagesඑහි සරල කළමනාකරණ යූඅයි Please refer my update below on how to deploy the application
අනීෂ් වර්ගිස්

Answers:


1475

ඩෝකර් 1.13.x සිට ඔබට ඩෝකර් බහාලුම් කප්පාදු භාවිතා කළ හැකිය :

docker container prune

මෙය නවතා ඇති සියලුම බහාලුම් ඉවත් කරනු ඇති අතර සියලු වේදිකාවල එකම ආකාරයකින් ක්‍රියා කළ යුතුය.

තවද එහි ඇති Docker පද්ධතිය කප්පාදු කරනවා :

docker system prune

එමඟින් භාවිතයට නොගත් බහාලුම්, ජාල, රූප (අන්තරාදායක සහ යොමු නොකල) සහ විකල්ප වශයෙන් වෙළුම් එක් විධානයකින් පිරිසිදු කරනු ඇත.


පැරණි ඩෝකර් අනුවාද සඳහා, ඔබට අවශ්‍ය දේ ලබා ගැනීම සඳහා ඩොකර් විධාන වෙනත් යුනික්ස් විධාන සමඟ සම්බන්ධ කළ හැකිය. සති ගණනක් පැරණි පැරණි බහාලුම් පිරිසිදු කරන්නේ කෙසේද යන්න පිළිබඳ උදාහරණයක් මෙන්න:

$ docker ps --filter "status=exited" | grep 'weeks ago' | awk '{print $1}' | xargs --no-run-if-empty docker rm

ණය ලබා දීම සඳහා, එය ගෙවිය යුතු තැන, මෙම උදාහරණය https://twitter.com/jpetazzo/status/347431091415703552 වෙතින් .


92
ටැග් නොකළ සියලුම පින්තූර ඉවත් කිරීමට සමාන විධානයක්: docker images | grep "<none>" | awk '{print $3}' | xargs docker rmi
මොහාන් රාජ්

7
@ මයිකල් මුලර් ඩොකර් ෆයිල් එකකින් රූපයක් සාදන විට -rmසාර්ථකව ගොඩනඟා ගැනීමෙන් පසු අතරමැදි බහාලුම් ඉවත් කිරීමේ විකල්පය ඔබට නියම කළ හැකිය.
ෆ්‍රීක් කල්ටර්

3
@ මයිකල් මුලර් පින්තූර හැඹිලි සඳහා භාවිතා කරයි, එබැවින් බහාලුම් ඉවත් කිරීමෙන් එය බලපාන්නේ නැත.
කෙන් කොක්රාන්

7
ඔබට මේ සඳහා awk භාවිතා කිරීමට අවශ්‍ය නම් මෙම විධානය සලකා බලන්න ඔබට සියලු නැවතුම් බහාලුම් rm කිරීමට අවශ්‍ය නම් (පළමු පේළිය නිසා දෝෂයක් නොමැතිව):docker ps -a | awk 'NR > 1 {print $1}' | xargs docker rm
masi

3
ටැග් නොකළ රූප ඉවත් කිරීම සඳහා යාවත්කාලීන කළ විධානය මෙය විය යුතුයdocker rmi $(docker images -q -f dangling=true)
Ghjnut

627

ගුයිලූම් ජේ. චාම්ස් වෙතින් මට ලැබුණු තවත් ක්‍රමයක් (ණය ලැබිය යුතු තැන):

docker rm `docker ps --no-trunc -aq`

සියළුම බහාලුම් අලංකාර ආකාරයකින් ඉවත් කරනු ඇත.

සහ වින්ඩෝස් සඳහා බාර්ටෝස් බිලිකි විසිනි:

FOR /f "tokens=*" %i IN ('docker ps -a -q') DO docker rm %i

පවර්ෂෙල් සඳහා:

docker rm @(docker ps -aq)

ඩොකර් 1.13 (Q4 2016) සමඟ යාවත්කාලීන කිරීම, VonC වෙත ණය ( පසුව මෙම ත්‍රෙඩ් එකේ ):

docker system prune භාවිතයට නොගත් සියලුම දත්ත මකා දමනු ඇත (එනම්, පිළිවෙලට: බහාලුම් නැවතුණි, බහාලුම් නොමැතිව පරිමාවන් සහ බහාලුම් නොමැති රූප).

PR 26108 බලන්න සහ 86de7c0 කරන්න , ඒවා නව විධාන කිහිපයක් හඳුන්වා දෙන අතර ඩොකර් ඩීමන් දත්ත තැටියේ කොපමණ ඉඩ ප්‍රමාණයක් ගෙන ඇත්දැයි බැලීමට සහ “අනවශ්‍ය” අතිරික්තය පහසුවෙන් පිරිසිදු කිරීමට ඉඩ සලසයි.

docker system prune

WARNING! This will remove:
    - all stopped containers
    - all volumes not used by at least one container
    - all images without at least one container associated to them
Are you sure you want to continue? [y/N] y

11
මෙය කෙසේ හෝ මට වැඩ කරන්නේ නැත, නමුත් docker ps -a -q | xargs docker rmක්‍රියා කරයි, (sudo අවශ්‍ය විය හැකිය)
FUD

86
කුමක් ගැනද docker rm $(docker ps -a -q)?
qkrijger

8
kqrijger, මෙය ඔබේ මුල් පිළිතුරෙන් කිසිවක් වෙනස් නොකරයි. ගැටළුව වන්නේ විධාන රේඛා පිටාර ගැලීමයි. xargs ප්‍රභේදය එය සමඟ ඉතා හොඳ ආකාරයකින් කටයුතු කරයි. හැඳුනුම් ගැටුම් වලක්වා ගැනීම සඳහා මම ඩොකර් පීඑස් වෙත --no-trunk එකතු කරමි.
Ihor Kaharlichenko

8
ඔබ දත්ත පමණක් බහාලුමක් භාවිතා කරන්නේ නම් එය ද ඉවත් කරනු ඇත
Dzung Nguyen

4
කෙසේ වෙතත් සම්පූර්ණ හැඳුනුම්පත් අවශ්‍ය නොවන --no-truncබැවින් මට කාරණය නොපෙනේ docker rm.
පිටිකෝස්

413

යාවත්කාලීන කළ පිළිතුරු භාවිතය docker system pruneහෝ docker container pruneදැන්. VonC හි යාවත්කාලීන කළ පිළිතුර බලන්න .

පෙර පිළිතුර ඉහත විවිධ ඉඟි කිහිපයක් රචනා කිරීම, ක්‍රියාත්මක නොවන සියලුම බහාලුම් ඉවත් කිරීමට වඩාත්ම අලංකාර ක්‍රමය ලෙස පෙනේ:

docker rm $(docker ps -q -f status=exited)

  • -q බහාලුම් අයිඩී පමණක් මුද්‍රණය කරයි (තීරු ශීර්ෂ නොමැතිව)
  • -f ඔබගේ මුද්‍රිත බහාලුම් ලැයිස්තුව පෙරීමට ඔබට ඉඩ දෙයි (මේ අවස්ථාවේ දී අපි පෙරහන් කරන්නේ පිටවන බහාලුම් පමණක් පෙන්වීමට පමණි)

7
මෙය නිවැරදි පිළිතුර විය යුතුය, මන්ද එය ((ඩොකර් පිංතූර) හි පෙළ ප්‍රතිදාන ආකෘතිය වෙනස් නොවන බව උපකල්පනය කරනවාට වඩා, තවදුරටත් භාවිතා නොකරන බහාලුම් ඔබට පැවසීමට ඩොකර් මත රඳා පවතී. දෙකක් වෙනුවට එක් අමතර ක්‍රියාවලියක් පමණක් ඇති කිරීම සඳහා ප්‍රසාද ලකුණු.
eurythmia

18
-vපරිමාව වළක්වා ගැනීම සඳහා ඔබට එකතු කිරීමට අවශ්‍ය විය හැකිය : docker rm -v $(docker ps -q -f status=exited). අනතුරුදායක වෙළුම් පිළිබඳ විස්තර සඳහා docs.docker.com/userguide/dockervolumes/… බලන්න .
rluba

lrluba ඩොකර් 1.9 හි පෙනෙන පරිදි එම ගැටළුව විසඳීම සඳහා වෙනම වෙළුම් api එකක් ඇත. github.com/docker/docker/pull/14242
රයන් වෝල්ස්

අන්වර්ථයක් පහසු විය හැකිය:alias docker-gc="docker rm -v \$(docker ps -q -f status=exited)"
ෆ්‍රෑන්ක් නෙබ්ලං

නිවැරදි ලෙස සලකුණු කර ඇති පිළිතුර මෙන් නොව, yan රයන් වෝල්ස් පිළිතුර OSX මත ක්‍රියා කරන අතරම වඩාත් සංක්ෂිප්ත වේ.
රේ

255

නිල ක්‍රමය නම්:

docker rm `docker ps -aq`

ඩොකර් නඩත්තු කරන්නන් පෙන්වා දී ඇත්තේ මේ සඳහා විධානයක් නොමැති බවයි - තවද ඔබ එවැනි විධානයන් රචනා කරයි:

අපි මීට පෙර මේ ගැන සාකච්ඡා කර ඇති අතර ඩොකර් වෙත අතිරේක කේතයක් එකතු නොකර පරිශීලකයින්ට ඉහත පේළිය භාවිතා කිරීමට කැමැත්තක් දක්වමු.


6
මෙය නරක විසඳුමකි, මන්ද එය ගබඩා බහාලුම් ද මකා දමනු ඇත.
සොබ්රික්

8
"ගබඩා බහාලුම්" යන්නෙන් ඔබ අදහස් කරන්නේ කුමක්ද? වරෙක දත්ත පරිමාවන් පිළිබඳ සඳහනක් තබා ගැනීම සඳහා භාවිතා කරන ලද දත්ත පමණක් බහාලුම් ඔබ අදහස් කරන්නේ docker volumeනම්, උප කමාන්ඩ් සහ නම් කළ වෙළුම් නිසා ඒවා තවදුරටත් අවශ්‍ය නොවේ .
L0j1k

මෙය වින්ඩෝස් පවර්ෂෙල් තුළ ක්‍රියාත්මක නොවන බව සලකන්න. ඒ සඳහා මෙය වඩා හොඳ විසඳුමකි: stackoverflow.com/a/23674294/1150683
බ්‍රැම් වැන්රෝයි

Ob සෝබ්‍රික් ඔබ ප්‍රතික්‍රියා නොකරන්නේ නම්, අවම වශයෙන් ඔබ ඔබේ අදහස මකා දැමිය යුතුය, එය සම්පුර්ණ හා හානිකර විකාරයකි.
පීටර් - මොනිකා නැවත ස්ථාපනය කරන්න

128

ඩෝකර් 1.13 (Q4 2016) සමඟ, ඔබට දැන් ඇත්තේ:

docker system prune -a භාවිතයට නොගත් සියලුම දත්ත මකා දමනු ඇත (එනම්, පිළිවෙලට: බහාලුම් නැවතුණි, බහාලුම් නොමැතිව පරිමාවන් සහ බහාලුම් නොමැති රූප).

docker system prune-a නොමැතිව (රූප සඳහා) ස්මයිල්බෝම්බය විසින් අදහස් දක්වන පරිදි, ටැංකි රහිත රූප හෝ ටැගයක් නොමැතිව රූප පමණක් ඉවත් කරනු ඇත .

PR 26108 බලන්න සහ 86de7c0 කරන්න , ඒවා නව විධාන කිහිපයක් හඳුන්වා දෙන අතර ඩොකර් ඩීමන් දත්ත තැටියේ කොපමණ ඉඩ ප්‍රමාණයක් ගෙන ඇත්දැයි බැලීමට සහ “අනවශ්‍ය” අතිරික්තය පහසුවෙන් පිරිසිදු කිරීමට ඉඩ සලසයි.

docker system prune -a

WARNING! This will remove:
    - all stopped containers
    - all volumes not used by at least one container
    - all images without at least one container associated to them
Are you sure you want to continue? [y/N] y

ලෙස wjv අදහස්,

එහි ද docker {container,image,volume,network} pruneහුදෙක් අභාවිත අවස්ථා ඉවත් කිරීමට භාවිතා කළ හැකි, එක් වර්ගය වස්තුවක.

කැපවීම 913e5cb වලින් හඳුන්වා දී ඇත , ඩෝකර් 1.13+ සඳහා පමණි.

docker container prune

බෙදාහදා ගැනීමට ස්තූතියි - මෙය දෘශ්‍යමාන වීම සඳහා, මම ඔබව ත්‍රෙඩ්
එකේ ඉහළින්ම

සුපුරුදු පරිදි, -fකිසිදු ප්‍රශ්නයක් අසන්නේ නැතිව පිරිසිදු කිරීමට බල කිරීම සඳහා ධජය එක් කරන්න .
ඩර්ක්

3
වර්තමානයේ නිවැරදි පිළිතුර ලෙස සලකුණු කළ යුතුය, ඉහත බොහෝ දේ නියමිත වේලාවට ය, නමුත් ඒවා අද දින සංකීර්ණ වී ඇත
ඉයුජන් මේයර්

එකඟ වුනා, මෑතකදී එතරම් පහසුයි, ඉහළට යන්න!
මැක්සිම් ජෙරින්ක්

කේත බ්ලොක් එකේ විස්තරය සඳහා docker system prune -a, භාවිතා නොකළ රූප ඉවත් කරයි. ටැගයක් නොමැතිව අන්තරාදායක රූප හෝ පින්තූර docker system pruneපමණක් ඉවත් කරයි .
ස්මයිල්බෝම්බ

104

දැන් සමඟ පෙරීම භාවිතා කළ හැකිය docker ps:

docker rm $(docker ps -q -f status=exited)

සහ රූප සඳහා :

docker rmi $(docker images -q -f "dangling=true")

කෙසේ වෙතත්, එම කිසිදු හේතු වනු ඇත docker rmහෝ docker rmiගැළපෙන කන්ටේනර් ඇති විට දෝෂයක් විසි කිරීමට. docker rm $(docker ps -aq)ධාවනය වන ඕනෑම බහාලුමක් ඉවත් කිරීමට උත්සාහ කිරීම නිසා පැරණි උපක්‍රමය ඊටත් වඩා දරුණු විය.

ඔබගේ ~/.bashrcහෝ ~/.profile:

# Use `docker-cleanup --dry-run` to see what would be deleted.

function docker-cleanup {
  EXITED=$(docker ps -q -f status=exited)
  DANGLING=$(docker images -q -f "dangling=true")

  if [ "$1" == "--dry-run" ]; then
    echo "==> Would stop containers:"
    echo $EXITED
    echo "==> And images:"
    echo $DANGLING
  else
    if [ -n "$EXITED" ]; then
      docker rm $EXITED
    else
      echo "No containers to remove."
    fi
    if [ -n "$DANGLING" ]; then
      docker rmi $DANGLING
    else
      echo "No images to remove."
    fi
  fi
}

සංස්කරණය කරන්න: පහත සඳහන් කළ පරිදි, මුල් පිළිතුර වූයේ බහාලුම් නොව රූප ඉවත් කිරීමයි. ප්‍රලේඛනයට නව සබැඳි ඇතුළුව දෙකටම පිළිතුරු දීමට යාවත්කාලීන කරන ලදි. නව psපෙරීම සඳහන් කිරීම ගැන ඒඩ්‍රියන් (සහ රයන් ගේ පිළිතුරට) ස්තූතියි .


2
මෙහි සැබෑ වාසිය සැලකිල්ලට ගන්න - ඔබ අහම්බෙන් storageකොන්ටිනර්වරුන් මරා නොදමයි.
සොබ්රික්

3
status=createdධාවනය නොවන සහ කිසි විටෙකත් ධාවනය නොවන ඒවා ලබා ගැනීමටද ඔබට භාවිතා කළ හැකිය.
එන්ඩර්ලන්ඩ්

98

යාවත්කාලීන කරන ලද්දේ 2019 (නවතම)

docker container prune

මෙය - 2017 (OLD) මාර්ගය

නැවැත්වූ සියලුම සම්බන්ධතා ඉවත් කිරීමට

docker rm $(docker ps -a -q)

සියලුම සම්බන්ධකයන් ඉවත් කිරීම සඳහා (නැවැත්වූ සහ නතර නොකළ)

docker rm  -f $(docker ps -a -q)

3
downvoted, මෙය නිසැකවම ඔබ 2017 දී කරන ආකාරය නොවන නිසා - එසේ වනු ඇත docker volume/container/image prune, stackoverflow.com/a/39860665/3625317
ඉයුජන් මේයර්

6
අ) මෙම පිළිතුර 2016 සිට වූ අතර, ආ) බොහෝ මිනිසුන් ලේ ගැලීමේ මායිම ධාවනය නොකරන නිසා පහත වැටීමට එරෙහිව නැගී සිටියහ.
උනන්දුවක් දක්වන

49

නැවැත්වූ සියලුම බහාලුම් ඉවත් කරන්න:

docker rm $(docker ps -a | grep Exited | awk '{print $1}')

Pauk960 විසින් අදහස් දැක්වීමෙන් :

සංස්කරණයේ සිට 1.3.0 ඔබ සමඟ පෙරහන් භාවිතා කළ හැකි docker psවෙනුවට, grep Exitedභාවිතය docker ps -a -f status=exited. ඔබ -qඑය සමඟ භාවිතා කරන්නේ නම් ඔබට සම්පූර්ණ ප්‍රතිදානය වෙනුවට බහාලුම් හැඳුනුම්පත් ලබා ගත හැකිය, ඒ සඳහා අමුතු භාවිතා කිරීම අවශ්‍ය නොවේ.


33

සියලුම බහාලුම් ඉවත් කිරීමට ඔබ අකමැති නම්, ඔබට නිශ්චිත බහාලුමක් සමඟ docker ps --before <container-ID>හෝ පසුව ඇති කළ බහාලුම් තෝරා ගත හැකියdocker ps --since <container-ID> . මෙම අංගය අවම වශයෙන් ඩෝකර් අනුවාදය 0.6.5 හි ඇත.

අපි කියමු ඔබ ඔබේ පද්ධතිය දියුණු කර ඇති අතර දැන් එය ක්‍රියාත්මක වන නමුත් බහාලුම් ගණනාවක් ඉතිරිව ඇත. එම ක්‍රියාකාරී අනුවාදයට පෙර සාදන ලද බහාලුම් ඉවත් කිරීමට ඔබට අවශ්‍යය. සමඟ වැඩ කරන බහාලුමේ හැඳුනුම්පත තීරණය කරන්න docker ps.

වෙනත් භාජනයකට පෙර සාදන ලද බහාලුම් ඉවත් කරන්න

docker rm $(docker ps --before 9c49c11c8d21 -q)

තවත් උදාහරණයක්. ඔබේ දත්ත ගබඩාව දැනටමත් ඩෝකර් බහාලුමක් මත ක්‍රියාත්මක වේ. වෙනත් බහාලුමක් මත ධාවනය කිරීම සඳහා ඔබ ඔබේ යෙදුම සංවර්ධනය කර ඇති අතර දැන් ඔබට අනවශ්‍ය බහාලුම් ගණනාවක් තිබේ.

එක්තරා බහාලුමක් පසු සාදන ලද බහාලුම් ඉවත් කරන්න

docker rm $(docker ps --since a6ca4661ec7f -q)

ඩෝකර් /var/lib/docker/containersඋබුන්ටු වල බහාලුම් ගබඩා කරයි. මම හිතන්නේ අමතර බහාලුම් වෙනත් හානියක් නොකරයි, නමුත් තැටියේ ඉඩ ප්‍රමාණය ගන්න.


32

යාවත්කාලීන කිරීම: ඩෝකර් අනුවාදය 1.13 (2017 ජනවාරි නිකුත් කරන ලද) අනුව, නැවතුම් බහාලුම්, භාවිතයට නොගත් පරිමාවන්, අන්තරාදායක රූප සහ භාවිතයට නොගත් ජාල පිරිසිදු කිරීම සඳහා ඔබට පහත විධානය නිකුත් කළ හැකිය:

docker system prune

ඔබ මකා දමන්නේ තත්වයක් ඇති බහාලුම් පමණක් බව සහතික කිරීමට ඔබට අවශ්‍ය නම් exited, මෙය භාවිතා කරන්න:

docker ps -aq -f status=exited | xargs docker rm

ඒ හා සමානව, ඔබ ඩොකර් දේවල් පිරිසිදු කරන්නේ නම්, ඔබට මේ ආකාරයෙන් ටැග් නොකළ, නම් නොකළ රූප ඉවත් කළ හැකිය:

docker images -q --no-trunc -f dangling=true | xargs docker rmi

22

මෙන්න මගේ docker-cleanupපිටපත, එය නොකැඩූ බහාලුම් සහ රූප ඉවත් කරයි. ඕනෑම යාවත්කාලීන කිරීම් සඳහා කරුණාකර මූලාශ්‍රය පරීක්ෂා කරන්න.

#!/bin/sh
# Cleanup docker files: untagged containers and images.
#
# Use `docker-cleanup -n` for a dry run to see what would be deleted.

untagged_containers() {
  # Print containers using untagged images: $1 is used with awk's print: 0=line, 1=column 1.
  docker ps -a | awk '$2 ~ "[0-9a-f]{12}" {print $'$1'}'
}

untagged_images() {
  # Print untagged images: $1 is used with awk's print: 0=line, 3=column 3.
  # NOTE: intermediate images (via -a) seem to only cause
  # "Error: Conflict, foobarid wasn't deleted" messages.
  # Might be useful sometimes when Docker messed things up?!
  # docker images -a | awk '$1 == "<none>" {print $'$1'}'
  docker images | tail -n +2 | awk '$1 == "<none>" {print $'$1'}'
}

# Dry-run.
if [ "$1" = "-n" ]; then
  echo "=== Containers with uncommitted images: ==="
  untagged_containers 0
  echo

  echo "=== Uncommitted images: ==="
  untagged_images 0

  exit
fi

# Remove containers with untagged images.
echo "Removing containers:" >&2
untagged_containers 1 | xargs --no-run-if-empty docker rm --volumes=true

# Remove untagged images
echo "Removing images:" >&2
untagged_images 3 | xargs --no-run-if-empty docker rmi

මුලාශ්‍රය: https://github.com/blueyed/dotfiles/blob/master/usr/bin/docker-cleanup


@ බ්‍රැඩ්මුරේ ස්තූතියි! ඔබටත් මේවා කැමති විය හැකිය: github.com/blueyed/dotfiles/commit/…
නිල් පාට

3
xargs --no-run-if-emptyවිකල්පය නිසා OSX හි ක්‍රියා නොකරයි
caktux

13

පළමුව, බහාලුම් ඉවත් කිරීමට උත්සාහ කිරීමට පෙර ඒවා ධාවනය කිරීම නවත්වන්න

ධාවනය වන බහාලුම් ඉවත් කරන්න

docker rm $(docker stop -t=1 $(docker ps -q))

killඒ වෙනුවට ඔබට භාවිතා කළ හැකිය stop. මගේ නඩුවේදී මම වඩාත් කැමති වන්නේ stopමම ඒවා නැවත ධාවනය කිරීමට නැඹුරු වන හෙයිනි. සෑම විටම නව එකක් නිර්මාණය කිරීම නිසා මම ඒවා මනාව වසා දැමීමට උත්සාහ කරමි.

සටහන: කන්ටේනරයක් නැවැත්වීමට උත්සාහ කිරීමෙන් ඔබට දෝෂයක් ලැබෙනු ඇත:

දෝෂය: ධාවනය වන බහාලුමක් ඉවත් කිරීමට නොහැකි, කරුණාකර පළමුව එය නවත්වන්න

සියලුම බහාලුම් ඉවත් කරන්න

docker rm $(docker ps -a -q)

11

වින්ඩෝස් කවචයෙන් සියලුම බහාලුම් ඉවත් කිරීම:

FOR /f "tokens=*" %i IN ('docker ps -a -q') DO docker rm %i

එය පළමු පිටුව බැවින් මම මෙය මගේ පිළිතුරට ඇතුළත් කරමි. ස්තූතියි
qkrijger

"වින්ඩෝස් කවචයෙන්" ? ඔබ අදහස් කරන්නේ "වින්ඩෝස් ෂෙල් (සීඑම්ඩී) භාවිතා කිරීම" ද ?
පීටර් මෝර්ටෙන්සන්

10

https://github.com/HardySimpson/docker-cleanup

ඩෝකර් පිරිසිදු කිරීම

ඉවත් කරන ඉතා කුඩා සර්වබලධාරී කවචයක්:

  • දිනකට පෙර ධාවනය නොවන බහාලුම්
  • ඉතිරි කන්ටේනරයකට අයත් නොවන පින්තූර

Crontab රැකියාවක් ලෙස ධාවනය කිරීමට අදහස් කරන්න

විශේෂාංගය

  • එය සියලු <none>:<none>රූප ඉවත් කරනු ඇත
  • රූපයට බහුවිධ repo: tag යොමු සටහන් තිබේ නම්, එය කන්ටේනරයක් ධාවනය කිරීම හැර අනෙක් සියලුම repo: tag ඉවත් කරයි. ඇත්තටම එය "ඩොකර් රිමී" වල ස්වභාවයයි.
  • බොහෝ දෝෂ පණිවිඩ තිරය මත දිස්වනු ඇති අතර ඔබට තීරණය කිරීමට 2>/dev/nullහෝ නොකිරීමට හැකිය
  • ඩොකර්-ජීසී වෙතින් යමක් ඉගෙන ගෙන එහි ගැටළුව විසඳන්න (එයට විකෘති repo: tag ඇති රූපය ඉවත් කළ නොහැක)

9

එබැවින්, පුද්ගලිකව මම නිර්දේශ කරන්නේ පින්තූර සහ බහාලුම් යන දෙකම සඳහා ඔබේ යෙදවුම් ස්ක්‍රිප්ටයේ කොටසක් ලෙස මෙය සිදු කිරීම, නවීනතම බහාලුම් සහ රූප පමණක් තබා ගැනීමයි. මම මගේ ඩෝකර් පින්තූර ටැග් කරන්නේ මා භාවිතා කරන එකම අනුවාදකරණ ක්‍රමවේදය සමඟ වන git tagඅතර සෑම විටම නවතම ඩෝකර් රූපය "නවතම" සමඟ ටැග් කරයි. මෙයින් අදහස් කරන්නේ කිසිවක් පිරිසිදු නොකර මගේ ඩෝකර් රූප මේ ආකාරයට දිස්වන බවයි:

REPOSITORY              TAG       IMAGE ID        CREATED         VIRTUAL SIZE
some_repo/some_image    0.0.5     8f1a7c7ba93c    23 hours ago    925.4 MB
some_repo/some_image    latest    8f1a7c7ba93c    23 hours ago    925.4 MB
some_repo/some_image    0.0.4     0beabfa514ea    45 hours ago    925.4 MB
some_repo/some_image    0.0.3     54302cd10bf2    6 days ago      978.5 MB
some_repo/some_image    0.0.2     0078b30f3d9a    7 days ago      978.5 MB
some_repo/some_image    0.0.1     sdfgdf0f3d9a    8 days ago      938.5 MB

දැන්, ඇත්ත වශයෙන්ම මගේ සියලු නිෂ්පාදන පෙට්ටිවල මගේ පින්තූර (හෝ බහාලුම්) සදාකාලිකවම තබා ගැනීමට මට අවශ්‍ය නැත. මට අවශ්‍ය වන්නේ අන්තිම 3 හෝ 4 රෝල්බැක් සඳහා සහ අනෙක් සියල්ල ඉවත් කිරීමට ය. යුනික්ස් tailමෙහි ඔබේ හොඳම මිතුරා ය. සිට docker imagesහා docker psදිනය සඳහා දෙකම, අපි භාවිතා කළ හැකි tailඉහළ තුනක් නමුත් සියලු තෝරා ඒවා ඉවත් කිරීමට:

docker rmi $(docker images -q | tail -n +4)

ඔබේ අනුයුක්ත ස්ක්‍රිප්ට් සමඟ (හෝ දේශීයව) සෑම විටම ඕනෑවට වඩා ඉඩක් නොගෙන හෝ පැරණි පින්තූර සමඟ පටලවා නොගෙන සුවපහසු ලෙස පෙරළීමට අවශ්‍ය තරම් පින්තූර තබා ගන්න.

පුද්ගලිකව, මම ඕනෑම වේලාවක මගේ නිෂ්පාදන පෙට්ටියේ එක් බහාලුමක් පමණක් තබා ගන්නෙමි, නමුත් ඔබට තවත් අවශ්‍ය නම් බහාලුම් සමඟ එකම දේ කළ හැකිය:

docker rm $(docker ps -aq | tail -n +4)

අවසාන වශයෙන්, මගේ සරල උදාහරණයේ දී අපි ගනුදෙනු කරන්නේ වරකට එක් ගබඩාවක් සමඟ පමණි, නමුත් ඔබට තවත් තිබේ නම්, ඔබට එකම අදහස සමඟ මඳක් නවීන ලබා ගත හැකිය. අවසාන පින්තූර තුන some_repo / some_image වෙතින් තබා ගැනීමට මට අවශ්‍ය යැයි පවසන්න. මම මේ දැන් මිශ්ර කළ හැකි grepසහ awkමගේ ගමන් විය:

docker rmi $(docker images -a | grep 'some_repo/some_image' | awk '{print $3}' | tail -n +4)

නැවතත්, එකම අදහස බහාලුම් සඳහා ද අදාළ වේ, නමුත් ඔබ එය මේ මොහොතේ ලබා ගනී, එබැවින් මම උදාහරණ දීම නවත්වමි.


8

භාවිත:

docker rm -f $(docker ps -a -q)

එය බලහත්කාරයෙන් නවතා දේශීයව ඇති සියලුම බහාලුම් ඉවත් කරයි.


කරුණාකර වැඩි විස්තර සමඟ සංස්කරණය කරන්න. කේත-පමණක් සහ "මෙය උත්සාහ කරන්න" පිළිතුරු අධෛර්යමත් වේ, මන්ද ඒවායේ සෙවිය හැකි අන්තර්ගතයක් නොමැති අතර යමෙකු "මෙය උත්සාහ කළ යුත්තේ" මන්දැයි පැහැදිලි නොකරන්න. දැනුම සඳහා සම්පතක් වීමට අපි මෙහි උත්සාහයක් දරමු.
බ්‍රයන් ටොම්ප්සෙට් - 汤 莱恩

උබුන්ටු 16.04 හි, ඩොකර්ට සුඩෝ අවශ්‍ය බැවින් ඔබ ලිවිය sudo docker rm -f $(sudo docker ps -a -q)යුතුය.
එලියට්

ප්ලස් ලෙස, මෙය වින්ඩෝස් හි ද පවර්ෂෙල් යටතේ ක්‍රියාත්මක වේ!
රොබට් අයිවන්ක්

@ එලියට් මම හිතන්නේ sudoඔබ ඔබේ පරිශීලකයා 'ඩොකර්' කණ්ඩායමට එකතු නොකළහොත් සෑම තැනකම අවශ්‍ය වේ. මගේ පරිශීලකයා ඩොකර් කණ්ඩායමට එක් කිරීමෙන් මම සුඩෝ නොමැතිව උබුන්ටු 16.10 භාවිතා කරමි.
emory

7

පැරණිතම බහාලුම් 5 ක් ඉවත් කරන්න:

docker rm `docker ps -aq | tail -n 5`

බහාලුම් කීයක් ඉතිරිව ඇත්දැයි බලන්න:

docker ps -aq | wc -l

නියම වැඩ @ පිටිකෝස්. සියලුම පැරණි බහාලුම් ඉවත් කරන පිළිතුර මම එකතු කර ඇත්තෙමි.
මොස්ටාෆා ගඩිමි

7

නතර කළ සියලුම බහාලුම් ඉවත් කරන්න.

sudo docker rm $ (sudo docker ps -a -q)

මෙය ඩොකර් ps -a -q සමඟ ඇති සියලුම බහාලුම් ලැයිස්තුවක් ලබාගෙන ඒවායේ අයිඩී ඩොකර් ආර්එම් වෙත යැවීමෙන් නතර කළ සියලුම බහාලුම් ඉවත් කරනු ඇත. මෙය ධාවනය වන බහාලුම් කිසිවක් ඉවත් නොකළ යුතු අතර, එය ඔබට ධාවනය වන රූපයක් ඉවත් කළ නොහැකි බව කියනු ඇත.

නොකැඩූ සියලුම පින්තූර ඉවත් කරන්න

දැන් ඔබට යම් ඉඩක් ඉතිරි කර ගැනීම සඳහා පැරණි රූප පිරිසිදු කිරීමට අවශ්‍යය.

sudo docker rmi $ (sudo docker images -q --filter "dangling = true")


-V විකල්පය (sudo docker rm -v $ (sudo docker ps -a -q)) සඳහන් කිරීමෙන් ඩොකර් වෙළුම් මකා දැමීමට අමතක නොකරන්න
vcarel

මෙය සොයා බැලුවේ නැත, නමුත් මම අනුමාන කරන්නේ මෙයයි:docker ps -aq | xargs docker rm -v
quine

මෙය ක්‍රියාත්මක වන්නේ වින්ඩෝස් නොව ලිනක්ස් වල පමණි ... නමුත් වින්ඩෝස් සඳහා docker rm -f $(docker ps -a -q)පවර්ෂෙල් / ඩෝකර් හි ක්‍රියා කරයි.
පීටර් මෝර්ටෙන්සන්

6

නව ක්‍රමය: spotify / docker-gc උපක්‍රමය වාදනය කරන්න.

 docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc spotify/docker-gc
  • පැයකට වඩා කලින් පිටවූ බහාලුම් ඉවත් කරනු ලැබේ.
  • ඉන් පසු ඉතිරි කන්ටේනරයකට අයත් නොවන පින්තූර ඉවත් කරනු ලැබේ

එය පාරිසරික සැකසුම් සඳහා සහාය වී ඇත

බහු ටැග් ඇති රූප මකා දැමීමට බල කිරීම

 FORCE_IMAGE_REMOVAL=1

බහාලුම් මකා දැමීමට බල කිරීම

 FORCE_CONTAINER_REMOVAL=1 

කසළ එකතු කිරීමෙන් මෑතකදී ඉවත් වූ බහාලුම් සහ රූප බැහැර කිරීම

 GRACE_PERIOD_SECONDS=86400

මෙම සැකසුම තත්පරයට පෙර GRACE_PERIOD_SECONDS ට වඩා අඩුවෙන් සාදන ලද පින්තූර ඉවත් කිරීම වළක්වයි.

වියළි ධාවනය

 DRY_RUN=1

අනාථ බහාලුම් පරිමාවන් පිරිසිදු කිරීම CLEAN_UP_VOLUMES = 1

යොමුව: docker-gc

කළ යුතු පැරණි ක්‍රමය:

පැරණි, ක්‍රියාත්මක නොවන බහාලුම් මකන්න

 docker ps -a -q -f status=exited | xargs --no-run-if-empty docker rm
             OR 
 docker rm $(docker ps -a -q)

ක්‍රියාත්මක නොවන ඩොකර් බහාලුම් හා සම්බන්ධ සියලුම පින්තූර මකන්න

 docker images -q | xargs --no-run-if-empty docker rmi

1.10.x සහ ඊට වැඩි ඩොකර් අනුවාදය සඳහා අනාථ ඩොකර් පරිමාවන් පිරිසිදු කිරීම

 docker volume ls -qf dangling=true | xargs -r docker volume rm

කාල සීමාව මත පදනම්ව

 docker ps -a | grep "weeks ago" | awk "{print $1}" | xargs --no-run-if-empty docker rm
 docker ps -a | grep "days ago" | awk "{print $1}" | xargs --no-run-if-empty docker rm
 docker ps -a | grep "hours ago" | awk "{print $1}" | xargs --no-run-if-empty docker rm

1
සිත්ගන්නා විකල්පය. +1
VonC

6
  1. සියලුම ඩොකර් ක්‍රියාවලි ඉවත් කරන්න:

    docker rm $(docker ps -a -q)
    
  2. විශේෂිත බහාලුම් ඉවත් කරන්න:

    $ docker ps -a (lists all old containers)
    
    $ docker rm container-Id
    

5

පිටවන බහාලුම් ඉවත් කිරීමට ඔබට පහත විධානය භාවිතා කළ හැකිය:

docker rm $(sudo docker ps -a | grep Exit | cut -d ' ' -f 1)

ඩොකර් මත ඇති පැරණි පින්තූර ඉවත් කිරීම සඳහා සම්පූර්ණ සාරාංශය මෙන්න: පැරණි ඩෝකර් බහාලුම් සහ රූප ඉවත් කිරීමට සාරාංශය .


4
#!/bin/bash
# docker-gc --- Remove stopped docker containers

RUNNING=$(docker ps -q)
ALL=$(docker ps -a -q)

for container in $ALL ; do
    [[ "$RUNNING" =~ "$container" ]] && continue
    echo Removing container: $(docker rm $container)
done

ඒ සඳහා සෙවීමට අවශ්ය නැති බව අයට තමන් github.com/spotify/docker-gc
ක්රෑර

එය පරිපූර්ණයි. එකම ක්‍රියාකාරීත්වයක් ඇති පිළිතුරක් ද මම ලියා ඇත්තෙමි.
මොස්ටෆා ගඩිමි

3

මම සෑම විටම docker rmi $(docker ps -a -q)සියලු පින්තූර ඉවත් කිරීමට භාවිතා කරමි .

අසමත් වූ /var/lib/docker/graphවිට ඔබට නාමාවලිය ඉවත් කළ හැකිය docker rmi.


/ Var / lib / docker / graph තොරතුරු එක් කිරීම ගැන ස්තූතියි
ජොනතන් ඩිමාර්ක්ස්

ප්රශ්න වූයේ රූප නොව බහාලුම් ඉවත් කරන්නේ කෙසේද යන්නයි.
pauk960

3

ඔබට ඉවත් කළ හැක්කේ නතර කළ බහාලුම් පමණි. මුලදී ඒ සියල්ල නවත්වන්න

docker stop $(docker ps -a -q)

එවිට ඔබට ඉවත් කළ හැකිය

docker rm $(docker ps -a -q)


3

බහාලුම් සහ පිංතූර පිරිසිදු කිරීමට මෙම විධානය උත්සාහ කරන්න.

docker system prune -f

මෙය පුදුමාකාර ගැති ඉඟියක්!
b01

3

සියලුම බහාලුම් සහ රූප නැවැත්වීමට / ඉවත් කිරීමට මූලික පියවර

  1. සියලුම බහාලුම් ලැයිස්තුගත කරන්න

    docker ps -aq

  2. ධාවනය වන සියලුම බහාලුම් නවත්වන්න

    docker stop $(docker ps -aq)

  3. සියලුම බහාලුම් ඉවත් කරන්න

    docker rm $(docker ps -aq)

  4. සියලුම පින්තූර ඉවත් කරන්න

    docker rmi $(docker images -q)

සටහන: පළමුව ඔබ ධාවනය වන බහාලුම් ඉවත් කිරීමට පෙර ඒවා නතර කළ යුතුය. රූපයක් ඉවත් කිරීමට පෙර, ඔබ එහි යැපෙන බහාලුම් (ය) නැවැත්විය යුතුය.


2

උනන්දුවක් දක්වන ඕනෑම කෙනෙකුට, මම qkrijger වෙතින් ආදර්ශය ගෙන එය පැහැදිලි සියල්ල බවට පත් කළෙමි (සියල්ල නවතා ඉවත් කරන්න)

docker stop `docker ps --no-trunc -aq` ; docker rm `docker ps --no-trunc -aq`

ඔබ කෙසේ හෝ බහාලුම් ඉවත් කරන්නේ docker rm -f $(docker ps --no-trunc -aq)නම් වේගවත් වේ
qkrijger

ඇත්ත, නමුත් හවුල් හෝ නැවත භාවිතා කළ සම්පත් පිරිසිදු කිරීම සඳහා නිසි වසා දැමීමක් කිරීමට ඔබට අවශ්‍ය නම් (එනම් අමුණා ඇති වෙළුම්, නිවැරදිව වසා ඇති ක්‍රියාකාරී සම්බන්ධතා ආදිය) එවිට ඔබට පළමුව නැවතුම ඇමතිය යුතුය. විශිෂ්ට උදාහරණයක්, ඔබ සතුව ජෙන්කින්ස් කන්ටේනරයක් තිබේ නම්, කන්ටේනරය killing ාතනය කිරීම නරක අදහසකි. ඔබට අවශ්‍ය වන්නේ කිසියම් වෙනස් නොකළ වෙනසක් සුරැකීමට, පුරනය වී ඇති පරිශීලකයින්ට අනතුරු ඇඟවීමට සහ ඉතා වැදගත් ලෙස සියලු ගොඩනැඟිලි නිසි ලෙස නැවැත්වීමට ය.
ක්‍රේග් මැකෝනාගී

එකඟ විය, එය ඉතා වලංගු භාවිත අවස්ථාවකි
qkrijger

2
#!/bin/bash

echo Cleanup unused containers
unused_containers=$(docker ps -a -q --filter="status=exited")
if [[ -n $unused_containers ]]
then
  docker rm $unused_containers
fi

echo Cleanup unused images
unused_images=$(docker images | grep '^<none>' | awk '{print $3}')
if [[ -n $unused_images ]]
then
  docker rmi $unused_images
fi

5
ඔබ පිළිතුරු දෙන විට, කේත ඩම්ප් එකකට වඩා විසඳුම කරන්නේ කුමක්ද යන්න පිළිබඳව යම් පැහැදිලි කිරීමක් කිරීම වඩාත් සුදුසුය, එසේ නොමැතිනම් පිළිතුර මකා දැමිය හැකිය.
ඇල්බියු


2

මම භාවිතා කරන්නේ:

docker rm -v $(docker ps -a -q -f status=exited)

පිටවූ බහාලුම් මකා දැමීමට සහ:

docker rmi -f $(docker images | grep "<none>" | awk "{print \$3}")

ටැග් නොකළ සියලුම පින්තූර ඉවත් කිරීම සඳහා.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.