# Docker
# -------------------------------------------------------------------------------------------------
= CONTAINERS
# -------------------------------------------------------------------------------------------------
delete container (rm) <container_name> :: \
read -p "Are you sure [yN]? " yn; \
if [[ ${yn^} == Y ]]; then \
docker rm $1; \
fi \
!! docker ps --all --format '{{.Names}}' \
list containers (ps) [<-d>] :: \
if [[ $1 == -d ]]; then docker ps --all; \
else \
tmp="$(docker ps --all --format 'table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Size}}')"; \
echo "$tmp" | head -n1; \
echo "$tmp" | tail -n+2 | grep 'Up [0-9]* min' | sort -k2,2; \
echo "$tmp" | tail -n+2 | grep -v 'Up [0-9]* min' | sort -k 2,2; \
fi \
## -d: show details
logs (lo) [<-f>] <container-name> :: \
if [[ $1 == -f ]]; then docker logs -f $2; else docker logs $1; fi \
!! docker ps --all --format '{{.Names}}' \
## -f: follow log
errs (er) [<-f>] :: \
echo "" > /tmp/docker_err_p; \
while [[ true ]]; do \
for c in $(docker ps --format '{{.Names}}'); do \
docker logs $c 2>&1 | grep "ERROR:" | sed "s/^/$c: /"; \
done > /tmp/docker_err_c; \
grep -Fxvf /tmp/docker_err_p /tmp/docker_err_c; \
mv -f /tmp/docker_err_c /tmp/docker_err_p; \
if [[ $1 != -f ]]; then break; fi; \
sleep 2; \
done
pull container (pu) <container_name> :: \
docker pull $1
rename container (mv) <current_name> <new_name> :: \
docker rename $1 $2 \
!! docker ps --all --format '{{.Names}}'
restart container (re) <container_name> :: \
docker restart $1 \
!! docker ps --all --format '{{.Names}}'
run container (ru) <source-container-name> <deployed-container-name> [<-p host-port:container-port>] :: \
if [[ $3 == -p ]]; then \
docker run -d $3 $4 $5 $6 --name $2 $1; \
else \
docker -d --name $2 $1; \
fi
shell (sh) [<-s>] [<-r>] <container_name> :: \
tmp_shell=bash; tmp_user=""; \
while [[ "$1" != "" ]]; do \
case $1 in \
-s) tmp_shell=sh;; \
-r) tmp_user="--user root";; \
*) break;; \
esac; \
echo $1; shift; \
done; \
docker exec -it $tmp_user $1 $tmp_shell \
!! docker ps --all --format '{{.Names}}' \
## bash shell. -s: sh, -r: user root
start container (st) [<-a>] <container_name> :: docker start $1 \
!! docker ps --all --format '{{.Names}}'
stats (s) :: docker stats ## Show the CPU, Memory consumption of containers
stop container (so) [<-a>] <container_name> :: \
if [[ $1 == -a ]]; then \
conts="$(docker ps -q)"; \
if [[ "$conts" != "" ]]; then \
docker stop $conts; \
fi; \
else \
docker stop $1; \
fi \
!! docker ps --all --format '{{.Names}}' \
## -a: Stop all containers
# -------------------------------------------------------------------------------------------------
= COMPOSE
# -------------------------------------------------------------------------------------------------
compose build (cb) :: \
if [[ "$1" == "" ]]; then \
docker compose build; \
else \
docker compose -f $1 build; \
fi; \
## Build containers
# docker compose build --no-cache --progress=plain
compose down (cdo) [<service>] :: \
if [[ "$1" == "" ]]; then \
docker compose down; \
else \
docker compose -f $1 down; \
fi; \
## Stop and remove containers, networks
compose list (cls) :: docker compose ls
compose restart (cre) [<service>] :: \
if [[ "$1" == "" ]]; then \
docker compose restart; \
else \
docker compose -f $1 restart; \
fi; \
## Restart all containers
compose top (ct) :: docker compose top
compose up (cup) [<service>] :: \
if [[ "$1" == "" ]]; then \
docker compose up -d; \
else \
docker compose -f $1 up -d; \
fi; \
## Deploy and run containers, networks
compose build up (cbup) [<service>] :: \
if [[ "$1" == "" ]]; then \
docker compose up -d --build; \
else \
docker compose -f $1 up -d --build; \
fi; \
## Build, deploy and run containers, networks
# -------------------------------------------------------------------------------------------------
= NETWORKS
# -------------------------------------------------------------------------------------------------
list networks (ln) :: docker network ls
prune networks (pn) :: docker network prune ## Remove all unused custom networks
remove network (rn) <network-name> :: docker network rm $1 !! docker network ls --format '{{.Name}}'
# -------------------------------------------------------------------------------------------------
= SYSTEM
# -------------------------------------------------------------------------------------------------
system prune all (spa) :: \
read -p "THIS WILL REMOVE ALL unused containers, images, networks, and build cache (ie containers not created) - Are you sure [yN]? " yn; \
if [[ ${yn^} == Y ]]; then \
docker system prune -a; \
fi \
## Remove ALL unused containers, images, networks, and build cache
# -------------------------------------------------------------------------------------------------
= VOLUMES
# -------------------------------------------------------------------------------------------------
volume ls (vls) :: docker volume ls