එබැවින්, පුද්ගලිකව මම නිර්දේශ කරන්නේ පින්තූර සහ බහාලුම් යන දෙකම සඳහා ඔබේ යෙදවුම් ස්ක්රිප්ටයේ කොටසක් ලෙස මෙය සිදු කිරීම, නවීනතම බහාලුම් සහ රූප පමණක් තබා ගැනීමයි. මම මගේ ඩෝකර් පින්තූර ටැග් කරන්නේ මා භාවිතා කරන එකම අනුවාදකරණ ක්රමවේදය සමඟ වන 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)
නැවතත්, එකම අදහස බහාලුම් සඳහා ද අදාළ වේ, නමුත් ඔබ එය මේ මොහොතේ ලබා ගනී, එබැවින් මම උදාහරණ දීම නවත්වමි.