|
1 | 1 | #!/bin/bash
|
2 | 2 |
|
| 3 | +checkPatterns() { |
| 4 | + keepit=$3 |
| 5 | + if [ -n "$1" ]; then |
| 6 | + for PATTERN in $(echo $1 | tr "," "\n"); do |
| 7 | + if [[ "$2" = $PATTERN* ]]; then |
| 8 | + if [ $DEBUG ]; then echo "DEBUG: Matches $PATTERN - keeping"; fi |
| 9 | + keepit=1 |
| 10 | + else |
| 11 | + if [ $DEBUG ]; then echo "DEBUG: No match for $PATTERN"; fi |
| 12 | + fi |
| 13 | + done |
| 14 | + fi |
| 15 | + return $keepit |
| 16 | +} |
| 17 | + |
3 | 18 | if [ ! -e "/var/run/docker.sock" ]; then
|
4 | 19 | echo "=> Cannot find docker socket(/var/run/docker.sock), please check the command!"
|
5 | 20 | exit 1
|
@@ -35,6 +50,13 @@ if [ "${KEEP_CONTAINERS}" == "**All**" ]; then
|
35 | 50 | KEEP_CONTAINERS="."
|
36 | 51 | fi
|
37 | 52 |
|
| 53 | +if [ "${KEEP_CONTAINERS_NAMED}" == "**None**" ]; then |
| 54 | + unset KEEP_CONTAINERS_NAMED |
| 55 | +fi |
| 56 | +if [ "${KEEP_CONTAINERS_NAMED}" == "**All**" ]; then |
| 57 | + KEEP_CONTAINERS_NAMED="." |
| 58 | +fi |
| 59 | + |
38 | 60 | if [ "${LOOP}" != "false" ]; then
|
39 | 61 | LOOP=true
|
40 | 62 | fi
|
|
65 | 87 | EXITED_CONTAINERS_IDS="`docker ps -a -q -f status=exited -f status=dead | xargs echo`"
|
66 | 88 | for CONTAINER_ID in $EXITED_CONTAINERS_IDS; do
|
67 | 89 | CONTAINER_IMAGE=$(docker inspect --format='{{(index .Config.Image)}}' $CONTAINER_ID)
|
68 |
| - if [ $DEBUG ]; then echo "DEBUG: Check container $CONTAINER_IMAGE"; fi |
| 90 | + CONTAINER_NAME=$(docker inspect --format='{{(index .Name)}}' $CONTAINER_ID) |
| 91 | + if [ $DEBUG ]; then echo "DEBUG: Check container image $CONTAINER_IMAGE named $CONTAINER_NAME"; fi |
69 | 92 | keepit=0
|
70 |
| - if [ -n "${KEEP_CONTAINERS}" ]; then |
71 |
| - for PATTERN in $(echo ${KEEP_CONTAINERS} | tr "," "\n"); do |
72 |
| - if [[ "${CONTAINER_IMAGE}" = $PATTERN* ]]; then |
73 |
| - if [ $DEBUG ]; then echo "DEBUG: Matches $PATTERN - keeping"; fi |
74 |
| - keepit=1 |
75 |
| - else |
76 |
| - if [ $DEBUG ]; then echo "DEBUG: No match for $PATTERN"; fi |
77 |
| - fi |
78 |
| - done |
79 |
| - fi |
| 93 | + checkPatterns "${KEEP_CONTAINERS}" "${CONTAINER_IMAGE}" $keepit |
| 94 | + keepit=$? |
| 95 | + checkPatterns "${KEEP_CONTAINERS_NAMED}" "${CONTAINER_NAME}" $keepit |
| 96 | + keepit=$? |
80 | 97 | if [[ $keepit -eq 0 ]]; then
|
81 | 98 | echo "Removing stopped container $CONTAINER_ID"
|
82 | 99 | docker rm -v $CONTAINER_ID
|
|
0 commit comments