feat(installers): Added docker installer
This commit is contained in:
72
installers/install_docker.sh
Normal file
72
installers/install_docker.sh
Normal file
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env bash
|
||||
# Tool: docker
|
||||
# DisplayName: Docker
|
||||
# Description: Container runtime and orchestration platform
|
||||
#
|
||||
# Docker Installer Script
|
||||
#
|
||||
|
||||
# Prevent standalone execution
|
||||
if [ -z "${_LIB_COMMON_SOURCED:-}" ]; then
|
||||
echo "Error: This script must be run through the 'b' CLI." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# ─── Installation Logic ──────────────────────────────────────────────
|
||||
|
||||
install_docker() {
|
||||
if has_command docker; then
|
||||
if ! confirm "Docker is already installed. Reinstall/Upgrade?"; then
|
||||
log_info "Skipping Docker installation."
|
||||
return
|
||||
fi
|
||||
else
|
||||
if ! confirm "Install Docker?"; then
|
||||
log_info "Skipping Docker installation."
|
||||
return
|
||||
fi
|
||||
fi
|
||||
|
||||
# Use pkg_install for distro packages (it automatically handles rollback hooks for the packages!)
|
||||
pkg_install "arch:docker|debian:docker.io|fedora:docker"
|
||||
|
||||
# Ensure docker group exists (some distros might not create it immediately)
|
||||
if ! getent group docker >/dev/null 2>&1; then
|
||||
log_info "Creating docker group..."
|
||||
add_rollback_cmd "sudo groupdel docker || true"
|
||||
sudo groupadd docker
|
||||
fi
|
||||
|
||||
# Configure user group
|
||||
if ! groups "$USER" | grep -q "\bdocker\b"; then
|
||||
log_info "Adding $USER to the docker group..."
|
||||
add_rollback_cmd "sudo gpasswd -d $USER docker || true"
|
||||
sudo usermod -aG docker "$USER"
|
||||
log_warn "You will need to log out and log back in, or run 'newgrp docker' for the group changes to take effect."
|
||||
fi
|
||||
|
||||
# Enable and start systemd services
|
||||
if has_command systemctl; then
|
||||
log_info "Enabling and starting Docker services..."
|
||||
|
||||
# Add rollback cmds for systemd
|
||||
add_rollback_cmd "sudo systemctl disable --now docker.service || true"
|
||||
add_rollback_cmd "sudo systemctl disable --now containerd.service || true"
|
||||
|
||||
sudo systemctl enable --now docker.service || true
|
||||
sudo systemctl enable --now containerd.service || true
|
||||
fi
|
||||
}
|
||||
|
||||
# ─── Main ─────────────────────────────────────────────────────────────
|
||||
|
||||
main() {
|
||||
install_docker
|
||||
|
||||
echo
|
||||
log_success "Docker installation and configuration complete."
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user