#!/bin/bash
# Проверка наличия утилит
function check_dependencies {
if ! command -v curl &> /dev/null; then
sudo apt-get update
sudo apt-get install curl
# exit 1
fi
if ! command -v apt-get &> /dev/null; then
echo "Ошибка: apt-get не найден. Убедитесь, что используете систему на основе Debian/Ubuntu."
exit 1
fi
}
# Функция для удаления Docker
function uninstall_docker {
echo "Удаление Docker..."
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras -y
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.asc
# Проверяем, удалены ли все файлы Docker
if ! dpkg-query -W -f='${Status}' docker-ce 2>/dev/null | grep -q "install ok installed"; then
echo "Docker успешно удален."
else
echo "Ошибка при удалении Docker."
exit 1
fi
}
# Функция для установки Docker
function install_docker {
echo "Установка Docker..."
sudo apt-get update
sudo apt-get install ca-certificates curl -y
# Создание директории для ключей
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
# Добавляем репозиторий Docker в источники 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
# Обновляем пакеты и устанавливаем Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# Проверяем успешность установки
if [[ $? -eq 0 ]]; then
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker # Обновление группы
echo "Docker успешно установлен."
else
echo "Ошибка при установке Docker."
fi
}
# Проверка, установлен ли Docker
I=$(dpkg-query -W -f='${Status}' docker-ce 2>/dev/null)
check_dependencies # Проверка наличия необходимых утилит
if [[ "$I" == *"install ok installed"* ]]; then
yn=''
while true; do
read -p "Найден установленный Doker. Удалить? (Y/N): " yn
case $yn in
[Yy]* )
uninstall_docker
break
;;
[Nn]* )
echo "Docker не удален."
exit 0
;;
* )
echo -ne "Только Y ли N, пожалуйста: "
;;
esac
done
else
yn=''
while true; do
read -p "Docker не установлен. Установить? (Y/N): " yn
case $yn in
[Yy]*)
install_docker
break
;;
[Nn]*)
echo "Docker не установлен."
exit 0
;;
*)
echo "Пожалуйста, введите только Y или N."
;;
esac
done
fi