docker installation script init
parent
3409a95f72
commit
0d21efef70
|
|
@ -0,0 +1,76 @@
|
|||
#!/usr/bin/env bash
|
||||
#RUN AS ROOT/SUDO
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Function to print messages
|
||||
info() { echo -e "\e[1;34m[INFO]\e[0m $*"; }
|
||||
error() { echo -e "\e[1;31m[ERROR]\e[0m $*" >&2; }
|
||||
|
||||
# Check if running as root
|
||||
if (( EUID != 0 )); then
|
||||
error "This script must be run as root (or via sudo)."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Detect Debian codename automatically
|
||||
DEBIAN_CODENAME=$(lsb_release -cs 2>/dev/null || grep VERSION_CODENAME /etc/os-release | cut -d= -f2)
|
||||
if [ -z "$DEBIAN_CODENAME" ]; then
|
||||
error "Could not detect Debian codename. Please specify manually."
|
||||
exit 1
|
||||
fi
|
||||
info "Detected Debian codename: $DEBIAN_CODENAME"
|
||||
|
||||
# 1. Update package index
|
||||
info "Updating package index..."
|
||||
apt update
|
||||
|
||||
# 2. Install prerequisites
|
||||
info "Installing prerequisites..."
|
||||
apt install -y apt-transport-https ca-certificates curl gpg lsb-release
|
||||
|
||||
# 3. Add Docker GPG key
|
||||
info "Adding Docker GPG key..."
|
||||
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker.gpg
|
||||
|
||||
# 4. Add Docker repository for detected Debian version
|
||||
ARCH=$(dpkg --print-architecture)
|
||||
info "Adding Docker repository for architecture: $ARCH..."
|
||||
echo "deb [arch=${ARCH} signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/debian ${DEBIAN_CODENAME} stable" \
|
||||
> /etc/apt/sources.list.d/docker.list
|
||||
|
||||
# 5. Update package index again to pick up Docker repo
|
||||
info "Updating package index (post repo addition)..."
|
||||
apt update
|
||||
|
||||
# 6. Install Docker components
|
||||
info "Installing Docker components..."
|
||||
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
|
||||
# 7. Enable and start Docker service
|
||||
info "Enabling and starting Docker service..."
|
||||
systemctl enable docker
|
||||
systemctl start docker
|
||||
|
||||
# 8. Verify Docker is running
|
||||
info "Verifying Docker status..."
|
||||
if systemctl is-active --quiet docker; then
|
||||
info "Docker is active."
|
||||
else
|
||||
error "Docker is not running!"
|
||||
journalctl -u docker --no-pager | head -n 20
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 9. Test Docker installation
|
||||
info "Running hello-world container to test Docker..."
|
||||
docker run --rm hello-world
|
||||
|
||||
# 10. Add non-root user to Docker group (if applicable)
|
||||
if [ -n "${SUDO_USER:-}" ]; then
|
||||
info "Adding user '$SUDO_USER' to docker group..."
|
||||
usermod -aG docker "$SUDO_USER"
|
||||
info "You may need to logout/login or reboot for group changes to take effect."
|
||||
fi
|
||||
|
||||
info "Docker installation completed successfully."
|
||||
Loading…
Reference in New Issue