grezzo/featlib/docker.sh

82 lines
3.4 KiB
Bash
Executable File

#! /bin/bash --
[ ! -z "${GREZZO_1577141523}" ] && return; GREZZO_1577141523=0
. "$(this_script_path)/lsb-release.sh"
function feat_addpacks_docker() {
if ! feat_missing "apt-get"; then
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove -y $pkg; done
sudo apt-get update
if [ "$(apt-cache search docker-ce | grep -o "^docker-ce ")" != "docker-ce" ]; then
sudo mkdir -p /etc/apt/keyrings
sudo apt-get install -y \
ca-certificates \
curl \
gnupg
sudo install -m 0755 -d /etc/apt/keyrings
if [ -f /etc/lsb-release ]; then
. /etc/lsb-release
fi
if [ -f /etc/os-release ]; then
. /etc/os-release
fi
DISTRIB_ID="${DISTRIB_ID:-$ID}"
DISTRIB_CODENAME="${DISTRIB_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}"
if [ -z "$DISTRIB_CODENAME" ]; then
feat_needed "lsb_release"
if [ -f /etc/lsb-release ]; then
. /etc/lsb-release
fi
DISTRIB_ID="${DISTRIB_ID:-$ID}"
DISTRIB_CODENAME="${DISTRIB_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}"
if [ -z "$DISTRIB_CODENAME" ]; then
echo "Impossibile determinare DISTRIB_CODENAME (mancano /etc/lsb-release e /etc/os-release)" >&2
return 1
fi
fi
sudo rm -rf /etc/apt/keyrings/docker.gpg >/dev/null 2>&1
if [[ "$DISTRIB_ID" == "LinuxMint" || "$DISTRIB_ID" == "linuxmint" ]]; then
if [ -f /etc/upstream-release/lsb-release ]; then
. /etc/upstream-release/lsb-release
DISTRIB_CODENAME="${DISTRIB_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}"
fi
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$DISTRIB_CODENAME stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
elif [[ "$DISTRIB_ID" == "Ubuntu" || "$DISTRIB_ID" == "ubuntu" ]]; then
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$DISTRIB_CODENAME stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
else
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$DISTRIB_CODENAME stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
fi
sudo apt-get update
fi
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
fi
}
function feat_add_docker() {
if feat_missing "docker"; then
feat_addpacks_docker
fi
if getent group docker >/dev/null 2>&1; then
local target_user
target_user="${SUDO_USER:-$USER}"
if getent passwd "$target_user" >/dev/null 2>&1; then
if ! id -nG "$target_user" | grep -qw docker; then
sudo usermod -aG docker "$target_user"
echo "Utente aggiunto al gruppo docker. Esegui logout/login per applicare i permessi."
fi
fi
fi
}