#!/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."