diff --git a/.config/zsh/.docker_aliases b/.config/zsh/.docker_aliases index b0aeb1c..415aa39 100644 --- a/.config/zsh/.docker_aliases +++ b/.config/zsh/.docker_aliases @@ -6,74 +6,75 @@ fi alias dk='docker' # containers -alias dkci='docker container inspect' -alias dkcls='docker container ls' -alias dkclsa='docker container ls -a' +alias dkci='docker container inspect' +alias dkcls='docker container ls' +alias dkclsa='docker container ls -a' alias dkclsaq='docker container ls -a -q' -alias dkclsq='docker container ls -q' -alias dkcp='docker container prune' -alias dkcpf='docker container prune -f' -alias dkcrm='docker container rm' -alias dkcrmf='docker container rm -f' -alias dkcsp='docker container stop' -alias dkcst='docker container start' -alias dkex='docker container exec -i -t' -alias dklo='docker logs -f' -alias dkr='docker run -i -t' +alias dkclsq='docker container ls -q' +alias dkcp='docker container prune' +alias dkcpf='docker container prune -f' +alias dkcrm='docker container rm' +alias dkcrmf='docker container rm -f' +alias dkcsp='docker container stop' +alias dkcst='docker container start' +alias dkex='docker container exec -i -t' +alias dklo='docker logs -f' +alias dkr='docker run -i -t' # images -alias dkb='docker build .' -alias dki='docker image' -alias dkic='docker image create' -alias dkii='docker image inspect' -alias dkils='docker image ls' -alias dkilsa='docker image ls -a' +alias dkb='docker build .' +alias dki='docker image' +alias dkic='docker image create' +alias dkii='docker image inspect' +alias dkils='docker image ls' +alias dkilsa='docker image ls -a' alias dkilsaq='docker image ls -a -q' -alias dkilsq='docker image ls -q' -alias dkip='docker image prune' -alias dkipf='docker image prune -f' -alias dkirm='docker image rm' -alias dkirmf='docker image rm -f' -alias dkl='docker pull' -alias dkp='docker push' -alias dkt='docker tag' +alias dkilsq='docker image ls -q' +alias dkip='docker image prune' +alias dkipf='docker image prune -f' +alias dkirm='docker image rm' +alias dkirmf='docker image rm -f' +alias dkl='docker pull' +alias dkla="docker image ls | awk '{print \"docker pull \" \$1 \":\" \$2}' | $SHELL" +alias dkp='docker push' +alias dkt='docker tag' # volumes -alias dkv='docker volume' -alias dkvc='docker volume create' -alias dkvi='docker volume inspect' -alias dkvls='docker volume ls' +alias dkv='docker volume' +alias dkvc='docker volume create' +alias dkvi='docker volume inspect' +alias dkvls='docker volume ls' alias dkvlsq='docker volume ls -q' -alias dkvp='docker volume prune' -alias dkvpf='docker volume prune -f' -alias dkvrm='docker volume rm' +alias dkvp='docker volume prune' +alias dkvpf='docker volume prune -f' +alias dkvrm='docker volume rm' alias dkvrmf='docker volume rm -f' # networks -alias dkn='docker network' -alias dknc='docker network create' -alias dkni='docker network inspect' -alias dknls='docker network ls' +alias dkn='docker network' +alias dknc='docker network create' +alias dkni='docker network inspect' +alias dknls='docker network ls' alias dknlsq='docker network ls -q' -alias dknp='docker network prune' -alias dknpf='docker network prune -f' -alias dknrm='docker network rm' +alias dknp='docker network prune' +alias dknpf='docker network prune -f' +alias dknrm='docker network rm' alias dknrmf='docker network rm -f' # system -alias dks='docker system' -alias dksdf='docker system df' -alias dksp='docker system prune' -alias dkspa='docker system prune -a' -alias dkspaf='docker system prune -af' -alias dkspf='docker system prune -f' -alias dkspv='docker system prune --volumes' -alias dkspva='docker system prune --volumes -a' +alias dks='docker system' +alias dksdf='docker system df' +alias dksp='docker system prune' +alias dkspa='docker system prune -a' +alias dkspaf='docker system prune -af' +alias dkspf='docker system prune -f' +alias dkspv='docker system prune --volumes' +alias dkspva='docker system prune --volumes -a' alias dkspvaf='docker system prune --volumes -af' -alias dkspvf='docker system prune --volumes -f' +alias dkspvf='docker system prune --volumes -f' # docker-compose alias dc='docker-compose' -alias dcd='docker-compose down' -alias dcup='docker-compose up -d' +alias dcd='docker-compose down' +alias dcup='docker-compose up -d' alias dcupb='docker-compose up -d --build' diff --git a/bin/dkpurge b/bin/dkpurge new file mode 100755 index 0000000..1cc88c2 --- /dev/null +++ b/bin/dkpurge @@ -0,0 +1,112 @@ +#!/bin/bash + +function usage() { + cat << EOF +Usage: $0 -hcCviIna +Options: + -h Show this help and exits + -c Remove stopped containers + -C Remove all containers + -v Remove unused volumes + -i Remove unused images + -I Remove all images + -n Remove unused networks + -a All of the above, equivalent of -CvIn +EOF + exit 0 +} + +function add_opt() { + local RESULT + + RESULT="$(unset "1")" + for o in "$@"; do + if [ "$((RESULT & o))" == 0 ]; then + RESULT="$((RESULT + o))" + fi + done + echo "$RESULT" +} + +if ! docker container ls > /dev/null 2>&1 && [ "$EUID" != 0 ]; then + exec sudo -- "$0" "$@" +fi + +c=1 +C=2 +v=4 +i=8 +I=16 +n=32 +a="$((c + C + v + I + n))" + +CLEAN=0 +while getopts hcCviIna o; do + case "$o" in + h) + usage + ;; + c) + CLEAN="$(add_opt "$CLEAN" "$c")" + ;; + C) + CLEAN="$(add_opt "$CLEAN" "$c" "$C")" + ;; + v) + CLEAN="$(add_opt "$CLEAN" "$v")" + ;; + i) + CLEAN="$(add_opt "$CLEAN" "$i")" + ;; + I) + CLEAN="$(add_opt "$CLEAN" "$I")" + ;; + n) + CLEAN="$(add_opt "$CLEAN" "$n")" + ;; + a) + CLEAN="$(add_opt "$CLEAN" "$c" "$C" "$v" "$I" "$n")" + ;; + *) + exit 1 + ;; + esac +done + +if [ "$((CLEAN & C))" == "$C" ]; then # C + docker container ls -aq | xargs docker stop +fi + +if [ "$((CLEAN & c))" == "$c" ]; then # C + docker container prune -f +fi + +PRUNE="docker system prune -f" +case "$CLEAN" in + "$v") + docker volume prune -f + ;; + "$i") + docker image prune -f + ;; + "$I") + docker image prune -af + ;; + "$n") + docker network prune -f + ;; + "$((c + i + n))") + $PRUNE + ;; + "$((c + I + n))") + $PRUNE -a + ;; + "$((c + v + n))") + $PRUNE --volumes + ;; + "$a") + $PRUNE -a --volumes + ;; + *) + ;; +esac