94 lines
4.5 KiB
Bash
Executable File
94 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# ==============================================================================
|
|
# Script para hacer Downgrade de Docker en sistemas basados en Debian/Ubuntu (v2)
|
|
# ==============================================================================
|
|
#
|
|
# ADVERTENCIA: Este script desinstalará la versión actual de Docker
|
|
# y eliminará los datos de Docker existentes (imágenes, contenedores, volúmenes).
|
|
# Se recomienda hacer una copia de seguridad si tienes datos importantes.
|
|
#
|
|
# Uso:
|
|
# 1. Guarda este script como 'downgrade_docker.sh'.
|
|
# 2. Dale permisos de ejecución: chmod +x downgrade_docker.sh
|
|
# 3. Ejecútalo con sudo: sudo ./downgrade_docker.sh
|
|
#
|
|
# ==============================================================================
|
|
|
|
set -e # Termina el script si algún comando falla
|
|
|
|
# --- 1. Definir la versión de Docker a instalar ---
|
|
# Cambia esta variable si deseas una versión diferente.
|
|
# Busca versiones disponibles con: apt-cache madison docker-ce
|
|
# El formato debe ser como "5:27.1.1-1~ubuntu.22.04~jammy"
|
|
# Dejaremos esto en blanco por ahora para que puedas elegir de la lista.
|
|
TARGET_DOCKER_VERSION=""
|
|
|
|
echo "--- Iniciando el proceso de downgrade de Docker (v2) ---"
|
|
|
|
# --- 2. Desbloquear (unhold) paquetes de Docker ---
|
|
echo "Paso 1: Desbloqueando paquetes de Docker existentes..."
|
|
sudo apt-mark unhold docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin || echo "No se encontraron paquetes de Docker bloqueados, continuando."
|
|
|
|
# --- 3. Detener los servicios de Docker ---
|
|
echo "Paso 2: Deteniendo los servicios de Docker..."
|
|
sudo systemctl stop docker.service
|
|
sudo systemctl stop docker.socket
|
|
sudo systemctl stop containerd
|
|
|
|
# --- 4. Desinstalar la versión actual de Docker ---
|
|
echo "Paso 3: Desinstalando los paquetes de Docker actuales..."
|
|
# Se agrega --allow-change-held-packages para asegurar la desinstalación
|
|
sudo apt-get remove --allow-change-held-packages -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
|
|
sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
|
|
sudo apt-get autoremove -y --purge
|
|
|
|
# --- 5. Limpiar directorios residuales (¡CUIDADO!) ---
|
|
echo "Paso 4: Limpiando directorios de Docker (esto eliminará imágenes y contenedores)..."
|
|
# Comentado por seguridad. Descomenta si realmente quieres una limpieza completa.
|
|
# sudo rm -rf /var/lib/docker
|
|
# sudo rm -rf /var/lib/containerd
|
|
|
|
# --- 6. Asegurar que el repositorio de Docker esté configurado ---
|
|
echo "Paso 5: Configurando el repositorio de Docker..."
|
|
sudo apt-get update
|
|
sudo apt-get install -y ca-certificates curl
|
|
sudo install -m 0755 -d /etc/apt/keyrings
|
|
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
|
|
|
|
# Añadir el repositorio a las fuentes de Apt
|
|
echo \
|
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
|
|
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
|
|
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
sudo apt-get update
|
|
|
|
# --- 7. Listar las versiones disponibles y solicitar al usuario que elija ---
|
|
echo "Paso 6: Versiones de Docker disponibles en el repositorio:"
|
|
apt-cache madison docker-ce | awk '{print $3}'
|
|
|
|
echo -e "\nPor favor, copia y pega la versión exacta que deseas instalar de la lista anterior (ej: 5:27.1.1-1~ubuntu.22.04~jammy):"
|
|
read -r TARGET_DOCKER_VERSION
|
|
|
|
if [ -z "$TARGET_DOCKER_VERSION" ]; then
|
|
echo "No se ha seleccionado ninguna versión. Abortando."
|
|
exit 1
|
|
fi
|
|
|
|
# --- 8. Instalar la versión de Docker seleccionada ---
|
|
echo "Paso 7: Instalando la versión $TARGET_DOCKER_VERSION..."
|
|
sudo apt-get install -y docker-ce=$TARGET_DOCKER_VERSION docker-ce-cli=$TARGET_DOCKER_VERSION containerd.io docker-buildx-plugin docker-compose-plugin
|
|
|
|
# --- 9. Verificar la instalación ---
|
|
echo "Paso 8: Verificando la versión de Docker instalada..."
|
|
docker --version
|
|
|
|
# --- 10. Bloquear la versión de Docker (opcional pero recomendado) ---
|
|
echo "Paso 9: Bloqueando la versión de Docker para evitar actualizaciones automáticas."
|
|
sudo apt-mark hold docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
|
|
|
echo -e "\n--- Proceso de downgrade de Docker completado. ---"
|
|
echo "Recuerda reiniciar los servicios que dependen de Docker, como CasaOS o los contenedores específicos."
|
|
echo "Puedes reiniciar el servicio de Docker con: sudo systemctl restart docker"
|