From 7ac0ad892212e723c36719f3df0d90c5c67b207b Mon Sep 17 00:00:00 2001 From: Andrii Syrovatko Date: Thu, 16 Apr 2026 17:35:32 +0300 Subject: [PATCH] feat(docker): Implemented a robust Bash utility for managing Docker bridge networks. Key improvements and features: - Automated IPAM: Scans for available /24 subnets within a defined BASE_NET range. - Native OS Integration: Forces static bridge names using 'com.docker.network.bridge.name' for easier netfilter/iptables rules. - Infrastructure Persistence: Tracks managed networks via a flat-file database (NET_FILE). - Safety Mechanisms: - Enforced 15-char limit for Linux interface compatibility. - ShellCheck-validated code with 'set -euo pipefail' (Strict Mode). - Interactive confirmation for bulk decommissioning. - Comprehensive Dashboard: Provides 'info' command for real-time network status and IP range overview. --- README.md | 18 +- .../linux/docker-ce/network-manager/README.md | 91 ++++++++ .../network-manager/assets/info-screen.png | Bin 0 -> 72720 bytes .../network-manager/assets/ip-a-test.png | Bin 0 -> 37851 bytes .../network-manager/dnm-networks.txt | 5 + .../docker-network-manager.conf.example | 6 + .../network-manager/docker-network-manager.sh | 213 ++++++++++++++++++ 7 files changed, 329 insertions(+), 4 deletions(-) create mode 100644 tools/linux/docker-ce/network-manager/README.md create mode 100644 tools/linux/docker-ce/network-manager/assets/info-screen.png create mode 100644 tools/linux/docker-ce/network-manager/assets/ip-a-test.png create mode 100644 tools/linux/docker-ce/network-manager/dnm-networks.txt create mode 100644 tools/linux/docker-ce/network-manager/docker-network-manager.conf.example create mode 100755 tools/linux/docker-ce/network-manager/docker-network-manager.sh diff --git a/README.md b/README.md index c2fefe8..263fe18 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,14 @@ A collection of battle-tested scripts and utilities for system administrators, D --- -### 📂 Navigation Table +## 📂 Navigation Table This toolbox contains a `mix` of `built-in scripts` and `links to my standalone specialized projects` for easier navigation. | OS | Stack | Utility Name | Description | Status | | :--- | :--- | :--- | :--- | :--- | -| ![Windows](https://img.shields.io/badge/Windows-0078D6?style=flat-square&logo=windows&logoColor=white) | ![Batch](https://img.shields.io/badge/-Batch-4D4D4D?style=flat-square) | [AnyDesk Reset](./tools/windows/apps-reset/anydesk-id-reseter.bat) | Terminate [AnyDesk](https://anydesk.com/en) & clear config files (`ID reset`) | ✅ Stable
🧰 Built-in  | -| ![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat-square&logo=linux&logoColor=black) | ![Bash](https://img.shields.io/badge/-Bash-4EAA25?style=flat-square) | [Juniper Network Toggle](./tools/linux/juniper-ctrl/juniper-net-toggle/juniper-net-toggle.sh) | Remote toggle for [Juniper](https://www.juniper.net/) interfaces & static routes | ✅ Stable
🧰 Built-in  | -| ![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat-square&logo=linux&logoColor=black) | ![Bash](https://img.shields.io/badge/-Bash-4EAA25?style=flat-square) | [Directory Comparator](./tools/linux/compare-dirs/compare-dirs.sh) | Recursive file comparison between two directories with detailed diff logging | ✅ Stable
🧰 Built-in  | +| ![Windows](https://img.shields.io/badge/Windows-0078D6?style=flat-square&logo=windows&logoColor=white) | ![Batch](https://img.shields.io/badge/-Batch-4D4D4D?style=flat-square) | [AnyDesk Reset](./tools/windows/apps-reset) | Terminate [AnyDesk](https://anydesk.com/en) & clear config files (`ID reset`) | ✅ Stable
🧰 Built-in  | +| ![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat-square&logo=linux&logoColor=black) | ![Bash](https://img.shields.io/badge/-Bash-4EAA25?style=flat-square) | [Docker Network Manager](./tools/linux/docker-ce/network-manager) | Auto-IPAM & static bridge naming for `Docker` bridge networks | ✅ Stable
🧰 Built-in  | +| ![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat-square&logo=linux&logoColor=black) | ![Bash](https://img.shields.io/badge/-Bash-4EAA25?style=flat-square) | [Juniper Network Toggle](./tools/linux/juniper-ctrl/juniper-net-toggle) | Remote toggle for [Juniper](https://www.juniper.net/) interfaces & static routes | ✅ Stable
🧰 Built-in  | +| ![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat-square&logo=linux&logoColor=black) | ![Bash](https://img.shields.io/badge/-Bash-4EAA25?style=flat-square) | [Directory Comparator](./tools/linux/compare-dirs) | Recursive file comparison between two directories with detailed diff logging | ✅ Stable
🧰 Built-in  | | ![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat-square&logo=linux&logoColor=black) | ![Bash](https://img.shields.io/badge/-Bash-4EAA25?style=flat-square) | [PSQL NFS Backup](https://github.com/andsyrovatko/s4k-psql-db-backuper) | Automation for [PostgreSQL](https://www.postgresql.org/) dumps with [NFS](https://en.wikipedia.org/wiki/Network_File_System) & [Telegram](https://telegram.org/) | ✅ Stable
📦 Standalone  | | ![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat-square&logo=linux&logoColor=black) | ![Bash](https://img.shields.io/badge/-Bash-4EAA25?style=flat-square) | [PVE Rsync Backup Pro](https://github.com/andsyrovatko/s4k-pve-rsync-backup) | Surgical [Proxmox VE](https://www.proxmox.com/) VM backups with log-parsed paths & auto-cleanup | ✅ Stable
📦 Standalone  | | ![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat-square&logo=linux&logoColor=black) | ![Bash](https://img.shields.io/badge/-Bash-4EAA25?style=flat-square) | [Whois Infrastructure Automator (for ISPs)](https://github.com/andsyrovatko/s4k-billing-whois-automator) | Automation for Whois DB update by billing system | ✅ Stable
📦 Standalone  | @@ -21,6 +22,15 @@ This toolbox contains a `mix` of `built-in scripts` and `links to my standalone --- +## ⭐ Featured Tools + +### 🐳 Docker Network Manager +A surgical tool for managing Docker infrastructure. It eliminates the "random bridge names" problem by forcing static names at the OS level, making it perfect for custom firewall rules and network monitoring. +- **Auto-IPAM**: Scans and assigns free subnets. +- **Native Naming**: Direct mapping between Docker names and Linux interfaces. + +--- + ### ⚠️ Disclaimer > **Use at your own risk!** These scripts are designed for administrative tasks and may perform destructive actions (like killing processes or deleting config files). The author is not responsible for any data loss or system instability. Always test in a sandbox environment first. diff --git a/tools/linux/docker-ce/network-manager/README.md b/tools/linux/docker-ce/network-manager/README.md new file mode 100644 index 0000000..5613599 --- /dev/null +++ b/tools/linux/docker-ce/network-manager/README.md @@ -0,0 +1,91 @@ +# 🐳 Docker Network Manager + +A lightweight, production-ready Bash utility to manage external Docker bridge networks with automatic IPAM (IP Address Management). It ensures your network configurations are persistent, documented, and free from subnet overlaps. + +--- + +## 🚀 Key Features +* **Smart Subnet Allocation:** Automatically finds the next available /24 block within your specified range (e.g., `172.30.x.x`). +* **Infrastructure as Code (Lite):** Keep your network names in a simple text file; the script handles the rest. +* **Safe Operations:** + * Interactive confirmation for bulk deletions. + * ShellCheck-validated code (Strict Mode: `set -euo pipefail`). + * Non-interactive mode support (via `FORCE=true`). +* **Status Dashboard:** Instant overview of which tracked networks are `ONLINE` or `OFFLINE`. + +## 🛠 Installation & Setup +1. **Clone the repo** (or add the code to your admin toolbox). +2. Create the config file: +```bash +cp docker-network-manager.conf.example docker-network-manager.conf +#OR +cat < docker-network-manager.conf +NET_FILE="./dnm-networks.txt" +LOG_FILE="./dnm-networks.log" +BASE_NET="172.30" +START_OCTET=0 +END_OCTET=255 +EOF +``` +3. **Make script executable:** +```bash +chmod +x docker-network-manager.sh +``` + +## 📖 Usage Examples +1. **Check current status** + ```bash + ./docker-network-manager.sh info + ``` + Example:\ + ![Dashboard Preview](assets/info-screen.png) +2. **Provision networks** + * **From file:** Add network names to dnm-networks.txt and run: + ```bash + ./docker-network-manager.sh create + ``` + * **Single network:** + ```bash + ./docker-network-manager.sh create br-project-alpha + ``` +3. **Decommission networks** + * **Remove and cleanup:** + ```bash + ./docker-network-manager.sh delete br-project-alpha + ``` + * **Purge all (from file):*** + ```bash + ./docker-network-manager.sh delete + ``` + +### ⚠️ IMPORTANT +> **Interface Name Limit**: Linux has a **15-character** limit for network interface names. Ensure your Docker network names stay within this limit to maintain consistent bridge naming. + +## 🧩 Native OS Integration +Unlike standard Docker networks that create cryptic interface names (e.g., br-837d9f...), this manager assigns the actual network name to the Linux bridge interface. + +This allows you to: +* Monitor traffic per-network using standard tools (tcpdump -i br-test1). +* Create persistent firewall rules (IPTables/NFTables) targeting specific bridges. +* Easily identify networks in ip addr or ifconfig output.\ +Example:\ +![Dashboard Preview](assets/ip-a-test.png) + +## 📊 Summary Table of Commands +| Command | Short | Argument | Description | +| :--- | :--- | :--- | :--- | +| `create` | `c` | [name] | Provisions network(s) and updates config file. | +| `delete` | `d` | [name] | Removes network(s) from Docker and config file. | +| `info` | `i` | - | Displays dashboard with IP ranges and statuses. | + +## ⚙️ Configuration Variables +| Variable | Default | Description | +| :--- | :--- | :--- | +| `BASE_NET` | `172.30` | The first two octets of your managed pool. | +| `START_OCTET` | `0` | Starting range for the 3rd octet. | +| `END_OCTET` | `255` | Ending range for the 3rd octet. | +| `NET_FILE` | `./dnm-networks.txt` | File where network names are stored. | +--- + +### ⚖️ License +MIT [LICENSE](https://github.com/andsyrovatko/s4k-admin-toolbox/blob/main/LICENSE). Free to use and modify. diff --git a/tools/linux/docker-ce/network-manager/assets/info-screen.png b/tools/linux/docker-ce/network-manager/assets/info-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..cd3bd59ee4318a580db218a76bec76705568eafb GIT binary patch literal 72720 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 O1KiOu)UMXFjrbSlLmFWK literal 0 HcmV?d00001 diff --git a/tools/linux/docker-ce/network-manager/assets/ip-a-test.png b/tools/linux/docker-ce/network-manager/assets/ip-a-test.png new file mode 100644 index 0000000000000000000000000000000000000000..5399b4a755badd7cecd34ed614054d96738c49d8 GIT binary patch literal 37851 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 literal 0 HcmV?d00001 diff --git a/tools/linux/docker-ce/network-manager/dnm-networks.txt b/tools/linux/docker-ce/network-manager/dnm-networks.txt new file mode 100644 index 0000000..698ce7a --- /dev/null +++ b/tools/linux/docker-ce/network-manager/dnm-networks.txt @@ -0,0 +1,5 @@ +# br-test1 +#br-test2 +br-test3 +br-longname_not_allowed-test4 +br-test5 diff --git a/tools/linux/docker-ce/network-manager/docker-network-manager.conf.example b/tools/linux/docker-ce/network-manager/docker-network-manager.conf.example new file mode 100644 index 0000000..07f67bc --- /dev/null +++ b/tools/linux/docker-ce/network-manager/docker-network-manager.conf.example @@ -0,0 +1,6 @@ +# MAIN VARIABLES +NET_FILE="./dnm-networks.txt" +LOG_FILE="./dnm-networks.log" +BASE_NET="172.30" +START_OCTET=0 +END_OCTET=255 diff --git a/tools/linux/docker-ce/network-manager/docker-network-manager.sh b/tools/linux/docker-ce/network-manager/docker-network-manager.sh new file mode 100755 index 0000000..c5e394d --- /dev/null +++ b/tools/linux/docker-ce/network-manager/docker-network-manager.sh @@ -0,0 +1,213 @@ +#!/usr/bin/env bash +# ============================================================================= +# Script Name : docker-network-manager.sh +# Description : Manage Docker external networks with automatic subnet allocation and tracking. +# Usage: : ./docker-network-manager.sh [ARGUMENTS] +# Commands: +# create [NAME] - Create a specific network by name or all networks from file if NO NAME provided. +# delete [NAME] - Delete a specific network by name or all networks from file if NO NAME provided. +# info - Show current status and configuration. +# For details - see README.md +# Author : syr4ok (Andrii Syrovatko) +# Version : 1.1.0 +# ============================================================================= + +# --- STRICT MODE --- +set -euo pipefail + +# Configuration Loader +CONFIG_FILE="$(dirname "$0")/docker-network-manager.conf" +if [[ -f "$CONFIG_FILE" ]]; then + # shellcheck source=/dev/null + source "$CONFIG_FILE" +else + echo "[Error]: Configuration file not found. Create ip_manager.conf from example." + exit 1 +fi + +touch "$NET_FILE" + +log() { + local level="$1"; shift + printf '%s [%s] %s\n' "$(date -Is)" "$level" "$*" | tee -a "$LOG_FILE" +} + +confirm_action() { + [[ "${FORCE:-false}" == "true" ]] && return 0 + + read -rp "Are you sure you want to delete ALL networks from $NET_FILE? (y/N): " response + case "$response" in + [yY][eE][sS]|[yY]) return 0 ;; + *) log INFO "Operation cancelled by user"; exit 0 ;; + esac +} + +# Network check +network_exists() { + docker network ls --format '{{.Name}}' | grep -Fxq "$1" +} + +used_subnets() { + local escaped_base="${BASE_NET//./\\.}" + + # Get all subnets from existing Docker networks and filter those that match our base pattern + docker network ls -q | xargs -r docker network inspect 2>/dev/null \ + | grep -oP '"Subnet":\s*"\K'"${escaped_base}"'\.[0-9]+\.0/24' || echo "" +} + +next_free_subnet() { + local used="$1" + for i in $(seq "$START_OCTET" "$END_OCTET"); do + local subnet="${BASE_NET}.${i}.0/24" + if ! grep -q "$subnet" <<<"$used"; then + echo "$subnet" + return + fi + done + log ERROR "no free /24 subnet found in ${BASE_NET}.x.x" + exit 1 +} + +name_length_check() { + local name="$1" + if [[ ${#name} -gt 15 ]]; then + log WARN "Network name '$name' is too long for a Linux bridge (max 15 chars). It might be truncated." + return 1 + fi + return 0 +} + +provision_single() { + local name="$1" + if ! name_length_check "$name"; then + return 1 + fi + if network_exists "$name"; then + log INFO "network already exists name=$name" + return + fi + + local used + local subnet + used="$(used_subnets)" + subnet="$(next_free_subnet "$used")" + local gw="${subnet%0/24}1" + + log INFO "creating network name=$name subnet=$subnet gateway=$gw" + docker network create --driver bridge --subnet "$subnet" --gateway "$gw" \ + --opt com.docker.network.bridge.name="$name" "$name" >/dev/null + + if ! grep -Fxq "$name" "$NET_FILE"; then + echo "$name" >> "$NET_FILE" + log INFO "network name=$name added to $NET_FILE" + sed -i '/^$/d' "$NET_FILE" + fi +} + +provision_from_file() { + [[ ! -s "$NET_FILE" ]] && { log WARN "NET_FILE is empty"; return; } + log INFO "starting mass provisioning from $NET_FILE" + while read -u 3 -r line; do + [[ -z "$line" || "$line" =~ ^# ]] && continue + provision_single "$line" || true + done 3< "$NET_FILE" +} + +delete_network() { + local name="$1" + if network_exists "$name"; then + log INFO "deleting network name=$name" + docker network rm "$name" >/dev/null + log INFO "network name=$name deleted from docker" + else + log WARN "network not found in docker name=$name — cleanup config anyway" + fi + + # Remove from NET_FILE if exists + if grep -Fxq "$name" "$NET_FILE"; then + sed -i "/^$name$/d" "$NET_FILE" + log INFO "network name=$name removed from $NET_FILE" + else + log INFO "network name=$name not found in $NET_FILE, no cleanup needed" + fi +} + +delete_all_from_file() { + log INFO "deleting all networks listed in $NET_FILE" + while read -u 3 -r line; do + [[ -z "$line" || "$line" =~ ^# ]] && continue + delete_network "$line" + done 3< "$NET_FILE" +} + +show_info() { + local tracked_count + tracked_count=$(grep -cE '^\s*[^#]' "$NET_FILE" || true) + + echo "--- Docker Network Manager v1.1.0 ---" + echo "Configured Base : ${BASE_NET}.0.0/16 (Range: .${START_OCTET}.x to .${END_OCTET}.x)" + echo "Config File : $(basename "$NET_FILE")" + echo "Log File : $(basename "$LOG_FILE")" + echo "Tracked Networks: $tracked_count" + + echo -e "\n[Current Status]" + if [[ "$tracked_count" -gt 0 ]]; then + printf "%-20s %-15s %-10s\n" "NETWORK NAME" "IP RANGE" "STATUS" + echo "--------------------------------------------------------" + while read -u 3 -r line; do + [[ -z "$line" || "$line" =~ ^# ]] && continue + + local status="OFFLINE" + local subnet="N/A" + + if network_exists "$line"; then + status="ONLINE" + subnet=$(docker network inspect "$line" --format '{{(index .IPAM.Config 0).Subnet}}' 2>/dev/null || echo "error") + fi + printf "%-20s %-15s %-10s\n" "$line" "$subnet" "$status" + done 3< "$NET_FILE" + else + echo "No networks tracked in $NET_FILE" + fi + + echo -e "\n[Usage]" + echo " $0 create (c) [name] - Create single network and add to file" + echo " $0 create (c) - Create all networks from file" + echo " $0 delete (d) [name] - Remove network and clean file" + echo " $0 delete (d) - Remove all networks from file" +} + +case "${1:-info}" in + [Cc][Rr][Ee][Aa][Tt][Ee]|[Cc]) + if [[ ${2:-} ]]; then + provision_single "$2" + else + provision_from_file + fi + ;; + [Dd][Ee][Ll][Ee][Tt][Ee]|[Dd]) + if [[ ${2:-} ]]; then + delete_network "$2" + else + count=$( (grep -vE '^\s*(#|$)' "$NET_FILE" || true) | wc -l | xargs) + + if (( count == 0 )); then + log INFO "Nothing to delete. $NET_FILE is empty or contains only comments." + exit 0 + fi + + confirm_action + delete_all_from_file + fi + ;; + [Ii][Nn][Ff][Oo]|[Ii]) + show_info + ;; + *) + log ERROR "Unknown command: $1" + show_info + exit 1 + ;; +esac + +exit 0