G

Untitled

public
Guest Jun 13, 2024 Never 20
Clone
Plaintext paste1.txt 23 lines (18 loc) | 1.07 KB
1
#!/bin/bash
2
3
# Ustawienie daty przedziału na 2 tygodnie wstecz
4
DATE=$(date -d '2 weeks ago' +%Y-%m-%dT%H:%M:%S)
5
6
# Wylistowanie wszystkich obrazów używanych przez serwisy w klastrze
7
USED_IMAGES_IDS=$(docker service ls --format "{{.Image}}" | xargs -n 1 docker inspect --format '{{.Id}}' | sort | uniq)
8
9
# Wylistowanie obrazów, które nie są aktualnie używane i są starsze niż 2 tygodnie
10
IMAGES=$(docker images --filter "dangling=false" --format "{{.ID}} {{.Repository}}:{{.Tag}} {{.CreatedAt}}" | awk -v date="$DATE" '$3 < date {print $1 " " $2}')
11
12
# Przechodzenie przez listę obrazów i sprawdzanie, czy są używane przez serwisy w klastrze
13
while IFS= read -r line; do
14
IMAGE_ID=$(echo $line | awk '{print $1}')
15
IMAGE_TAG=$(echo $line | awk '{print $2}')
16
17
if ! echo "${USED_IMAGES_IDS}" | grep -q "${IMAGE_ID}"; then
18
echo "Usuwanie obrazu: $IMAGE_TAG ($IMAGE_ID)"
19
docker rmi $IMAGE_ID
20
else
21
echo "Obraz ${IMAGE_TAG} ($IMAGE_ID) jest używany przez serwisy w klastrze i nie będzie usunięty."
22
fi
23
done <<< "$IMAGES"