79819288

Date: 2025-11-13 18:17:29
Score: 6.5 🚩
Natty:
Report link

Execute this script to fix this:

#!/bin/bash

# Script para fazer downgrade do Docker Engine
# Uso: sudo ./docker-downgrade.sh [versão]
# Exemplo: sudo ./docker-downgrade.sh 5:27.5.1-1~ubuntu.22.04~jammy

set -e  # Parar em caso de erro

# Cores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Versão padrão (você pode mudar aqui ou passar como argumento)
DEFAULT_VERSION="5:27.5.1-1~ubuntu.22.04~jammy"
VERSION="${1:-$DEFAULT_VERSION}"

echo -e "${YELLOW}=== Docker Engine Downgrade Script ===${NC}"
echo -e "Versão alvo: ${GREEN}$VERSION${NC}"
echo ""

# Verificar se está rodando como root
if [ "$EUID" -ne 0 ]; then
    echo -e "${RED}ERRO: Este script precisa ser executado como root (use sudo)${NC}"
    exit 1
fi

# Mostrar versão atual
echo -e "${YELLOW}=== Versão atual do Docker ===${NC}"
docker version 2>/dev/null || echo "Docker não está rodando ou não está instalado"
echo ""

# Confirmar com o usuário
echo -e "${YELLOW}=== AVISO ===${NC}"
echo "Este script irá:"
echo "  1. Fazer backup da configuração atual"
echo "  2. Parar o Docker"
echo "  3. Remover a versão atual"
echo "  4. Instalar a versão $VERSION"
echo "  5. Bloquear atualizações automáticas"
echo ""
read -p "Deseja continuar? (s/N) " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Ss]$ ]]; then
    echo -e "${RED}Operação cancelada pelo usuário${NC}"
    exit 1
fi

# Verificar se há containers rodando
echo -e "${YELLOW}=== Verificando containers em execução ===${NC}"
RUNNING_CONTAINERS=$(docker ps -q 2>/dev/null | wc -l)
if [ "$RUNNING_CONTAINERS" -gt 0 ]; then
    echo -e "${YELLOW}AVISO: Há $RUNNING_CONTAINERS container(s) em execução${NC}"
    docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
    echo ""
    read -p "Deseja parar os containers antes de continuar? (s/N) " -n 1 -r
    echo ""
    if [[ $REPLY =~ ^[Ss]$ ]]; then
        echo "Parando containers..."
        docker compose down 2>/dev/null || docker stop $(docker ps -q) 2>/dev/null || true
    fi
fi
echo ""

# Backup da configuração
echo -e "${YELLOW}=== Fazendo backup da configuração atual ===${NC}"
BACKUP_DIR="/etc/docker.backup.$(date +%Y%m%d_%H%M%S)"
if [ -d "/etc/docker" ]; then
    cp -r /etc/docker "$BACKUP_DIR"
    echo -e "${GREEN}✓ Backup criado em: $BACKUP_DIR${NC}"
else
    echo -e "${YELLOW}⚠ Diretório /etc/docker não existe, pulando backup${NC}"
fi
echo ""

# Parar o Docker
echo -e "${YELLOW}=== Parando Docker ===${NC}"
systemctl stop docker.socket 2>/dev/null || true
systemctl stop docker 2>/dev/null || true
echo -e "${GREEN}✓ Docker parado${NC}"
echo ""

# Remover versão atual
echo -e "${YELLOW}=== Removendo versão atual ===${NC}"
apt-mark unhold docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 2>/dev/null || true
apt-get remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 2>/dev/null || true
echo -e "${GREEN}✓ Versão atual removida${NC}"
echo ""

# Verificar se a versão existe no repositório
echo -e "${YELLOW}=== Verificando disponibilidade da versão ===${NC}"
if ! apt-cache madison docker-ce | grep -q "$VERSION"; then
    echo -e "${RED}ERRO: Versão $VERSION não encontrada no repositório${NC}"
    echo ""
    echo "Versões disponíveis:"
    apt-cache madison docker-ce | head -10
    exit 1
fi
echo -e "${GREEN}✓ Versão encontrada no repositório${NC}"
echo ""

# Instalar versão específica
echo -e "${YELLOW}=== Instalando versão $VERSION ===${NC}"
apt-get update -qq
apt-get install -y \
  docker-ce=$VERSION \
  docker-ce-cli=$VERSION \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin

echo -e "${GREEN}✓ Nova versão instalada${NC}"
echo ""

# Bloquear atualizações automáticas
echo -e "${YELLOW}=== Bloqueando atualizações automáticas ===${NC}"
apt-mark hold docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
echo -e "${GREEN}✓ Pacotes bloqueados para atualização${NC}"
echo ""

# Iniciar Docker
echo -e "${YELLOW}=== Iniciando Docker ===${NC}"
systemctl start docker
systemctl enable docker
echo -e "${GREEN}✓ Docker iniciado${NC}"
echo ""

# Aguardar Docker inicializar
echo "Aguardando Docker inicializar..."
sleep 3

# Verificar instalação
echo -e "${YELLOW}=== Verificando instalação ===${NC}"
if docker version &>/dev/null; then
    echo -e "${GREEN}✓ Docker está funcionando corretamente${NC}"
    echo ""
    docker version
else
    echo -e "${RED}✗ ERRO: Docker não está funcionando corretamente${NC}"
    echo "Verifique os logs com: sudo journalctl -u docker -n 50"
    exit 1
fi

echo ""
echo -e "${GREEN}=== Downgrade concluído com sucesso! ===${NC}"
echo ""
echo "Próximos passos:"
echo "  1. Se você parou os containers, inicie-os novamente com: docker compose up -d"
echo "  2. Para desbloquear atualizações futuras: sudo apt-mark unhold docker-ce docker-ce-cli"
echo "  3. Backup da configuração anterior em: $BACKUP_DIR"
echo ""
Reasons:
  • Blacklisted phrase (3): você
  • Blacklisted phrase (1): está
  • Blacklisted phrase (1): não
  • RegEx Blacklisted phrase (2): encontrada
  • Long answer (-1):
  • Has code block (-0.5):
  • Low reputation (1):
Posted by: Diogo Coutinho