commit afaf0871fb849a596d47ec8e804ff21e5e8c35c5 Author: colin Date: Thu Jul 18 03:24:20 2024 +0000 Add src/dockerutils.sh diff --git a/src/dockerutils.sh b/src/dockerutils.sh new file mode 100644 index 0000000..659a0b9 --- /dev/null +++ b/src/dockerutils.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +# Function to check Docker swarm status +check_swarm_status() { + SWARM_STATUS=$(docker info --format '{{.Swarm.LocalNodeState}}') + if [ "$SWARM_STATUS" == "inactive" ]; then + echo "Node is not in a swarm. Ready to join." + elif [ "$SWARM_STATUS" == "pending" ]; then + echo "Node is in a pending state." + elif [ "$SWARM_STATUS" == "active" ]; then + echo "Node is in an active swarm." + else + echo "Node swarm status is unknown: $SWARM_STATUS" + return 1 + fi +} + +# Function to check node role +check_node_role() { + NODE_ROLE=$(docker info --format '{{.Swarm.ControlAvailable}}') + if [ "$NODE_ROLE" == "true" ]; then + echo "Node is a manager." + else + echo "Node is a worker." + fi +} + +# Function to list Docker volumes +list_docker_volumes() { + volumes=$(docker volume ls --format '{{.Name}}') + if [ -z "$volumes" ]; then + echo "No Docker volumes found." + else + echo "Available Docker volumes:" + echo "$volumes" + fi +} + +# Function to list Docker overlay networks +list_docker_overlay_networks() { + networks=$(docker network ls --filter driver=overlay --format '{{.Name}}') + if [ -z "$networks" ]; then + echo "No Docker overlay networks found." + else + echo "Docker overlay networks:" + echo "$networks" + fi +} + +# Function to deploy a Docker stack with registry auth +dup() { + if [ -z "$1" ]; then + echo "Usage: dup " + return 1 + fi + docker stack deploy --with-registry-auth -c ~/"$1"/"$1".yml "$1" +} + +# Function to remove a Docker stack +ddn() { + if [ -z "$1" ]; then + echo "Usage: ddn " + return 1 + fi + docker stack rm "$1" +} + +# Function to get container ID by name +cid() { + if [ -z "$1" ]; then + echo "Usage: cid " + return 1 + fi + docker ps -qf "name=^$1" 2>/dev/null +} + +# Export functions as commands +export -f check_swarm_status +export -f check_node_role +export -f list_docker_volumes +export -f list_docker_overlay_networks +export -f dup +export -f ddn +export -f cid