Files

80 lines
3.2 KiB
Bash

#!/bin/sh
# Script para instalar Docker y Docker Compose en un sistema compatible.
# Verificar que se ejecuta con privilegios de superusuario
if [ "$(id -u)" -ne 0 ]; then
echo "Este script debe ejecutarse como root o con sudo."
exit 1
fi
# Actualizar la lista de paquetes
echo "Actualizando lista de paquetes..."
if command -v apt-get >/dev/null 2>&1; then
apt-get update || { echo "Error al actualizar los paquetes"; exit 1; }
elif command -v yum >/dev/null 2>&1; then
yum check-update || { echo "Error al verificar actualizaciones"; exit 1; }
else
echo "No se encontró un gestor de paquetes compatible (apt-get o yum)."
exit 1
fi
# Instalar dependencias requeridas
echo "Instalando dependencias requeridas..."
if command -v apt-get >/dev/null 2>&1; then
apt-get install -y ca-certificates curl gnupg lsb-release || {
echo "Error al instalar dependencias"; exit 1;
}
elif command -v yum >/dev/null 2>&1; then
yum install -y yum-utils || { echo "Error al instalar dependencias"; exit 1; }
fi
# Añadir la clave GPG y el repositorio oficial de Docker
echo "Añadiendo el repositorio de Docker..."
if command -v apt-get >/dev/null 2>&1; then
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg || {
echo "Error al añadir la clave GPG de Docker"; exit 1;
}
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/$(. /etc/os-release && echo "$ID") \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null || {
echo "Error al añadir el repositorio de Docker"; exit 1;
}
elif command -v yum >/dev/null 2>&1; then
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo || {
echo "Error al añadir el repositorio de Docker"; exit 1;
}
fi
# Instalar Docker Engine
echo "Instalando Docker..."
if command -v apt-get >/dev/null 2>&1; then
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io || {
echo "Error al instalar Docker"; exit 1;
}
elif command -v yum >/dev/null 2>&1; then
yum install -y docker-ce docker-ce-cli containerd.io || {
echo "Error al instalar Docker"; exit 1;
}
fi
# Iniciar y habilitar Docker
echo "Iniciando y habilitando Docker..."
systemctl start docker || { echo "Error al iniciar Docker"; exit 1; }
systemctl enable docker || { echo "Error al habilitar Docker"; exit 1; }
# Instalar Docker Compose
echo "Instalando Docker Compose..."
DOCKER_COMPOSE_VERSION="2.20.2"
curl -L "https://github.com/docker/compose/releases/download/v$DOCKER_COMPOSE_VERSION/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose || {
echo "Error al descargar Docker Compose"; exit 1;
}
chmod +x /usr/local/bin/docker-compose || { echo "Error al dar permisos a Docker Compose"; exit 1; }
# Verificar instalaciones
echo "Verificando instalación..."
docker --version || { echo "Docker no se instaló correctamente"; exit 1; }
docker-compose --version || { echo "Docker Compose no se instaló correctamente"; exit 1; }
echo "Docker y Docker Compose se han instalado correctamente."