nextcloud-install/docker/install-docker.sh
2026-06-24 09:23:58 +03:00

75 lines
2.7 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# Установка Docker Engine + Compose v2 из официального репозитория
# Запуск: sudo ./install-docker.sh [имя_пользователя_для_группы_docker]
#
# Поддерживается: Ubuntu, Debian
# Документация: https://docs.docker.com/engine/install/ubuntu/
set -euo pipefail
TARGET_USER="${1:-${SUDO_USER:-$(logname 2>/dev/null || echo root)}}"
log_info() { echo "[INFO] $*"; }
log_error() { echo "[ERROR] $*" >&2; }
[[ "${EUID}" -eq 0 ]] || { log_error "Запустите: sudo ./install-docker.sh"; exit 1; }
[[ -f /etc/os-release ]] || { log_error "Неизвестная ОС"; exit 1; }
# shellcheck disable=SC1091
source /etc/os-release
case "${ID}" in
ubuntu|debian)
DOCKER_REPO="https://download.docker.com/linux/${ID}"
;;
*)
log_error "Автоустановка поддерживает только Ubuntu/Debian (сейчас: ${ID})"
log_error "Установите Docker вручную: https://docs.docker.com/engine/install/"
exit 1
;;
esac
# Уже установлен?
if command -v docker &>/dev/null && docker compose version &>/dev/null 2>&1; then
log_info "Docker уже установлен: $(docker --version)"
if id -nG "${TARGET_USER}" 2>/dev/null | grep -qw docker; then
log_info "Пользователь ${TARGET_USER} уже в группе docker"
else
log_info "Добавляем ${TARGET_USER} в группу docker..."
usermod -aG docker "${TARGET_USER}"
log_info "Перелогиньтесь или выполните: newgrp docker"
fi
exit 0
fi
log_info "Установка Docker для ${PRETTY_NAME}..."
export DEBIAN_FRONTEND=noninteractive
apt-get update -qq
apt-get install -y -qq ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL "${DOCKER_REPO}/gpg" -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] ${DOCKER_REPO} \
${VERSION_CODENAME} stable" > /etc/apt/sources.list.d/docker.list
apt-get update -qq
apt-get install -y -qq \
docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker
if [[ "${TARGET_USER}" != root ]]; then
usermod -aG docker "${TARGET_USER}"
log_info "Пользователь ${TARGET_USER} добавлен в группу docker"
fi
log_info "Docker установлен: $(docker --version)"
log_info "Compose: $(docker compose version)"
if [[ "${TARGET_USER}" != root ]]; then
log_info "Если docker без sudo не работает — перелогиньтесь или: newgrp docker"
fi