102 lines
2.7 KiB
Bash
102 lines
2.7 KiB
Bash
#!/bin/bash
|
|
#
|
|
|
|
# 定义日志文件路径
|
|
LOG_FILE="/var/log/docker_install.log"
|
|
|
|
# 定义日志记录函数
|
|
function logger() {
|
|
local log_level="$1"
|
|
local message="$2"
|
|
local color_code=""
|
|
|
|
case "$log_level" in
|
|
"error" | "red")
|
|
color_code="\e[1;31m"
|
|
;;
|
|
"warning" | "yellow")
|
|
color_code="\e[1;33m"
|
|
;;
|
|
"success" | "green")
|
|
color_code="\e[1;32m"
|
|
;;
|
|
"info" | "blue")
|
|
color_code="\e[1;34m"
|
|
;;
|
|
esac
|
|
|
|
echo -e "${color_code}${message}\e[0m"
|
|
echo "$message" >> "$LOG_FILE"
|
|
}
|
|
|
|
# 判断是否 root 用户
|
|
if [ $(id -u) -ne 0 ]; then
|
|
logger "error" "########## 错误:此脚本必须以 root 身份运行! ##########"
|
|
exit 1
|
|
fi
|
|
|
|
# 环境检查
|
|
if which getenforce && [ $(getenforce) == "Enforcing" ]; then
|
|
logger "info" "信息:关闭 SELINUX"
|
|
setenforce 0
|
|
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
|
|
fi
|
|
|
|
# 定义安装函数
|
|
function install_docker() {
|
|
local install_method="$1"
|
|
|
|
if [ "$install_method" == "local" ]; then
|
|
if [ -f "docker-24.0.6.tar.gz" ]; then
|
|
logger "info" "信息:发现本地压缩包,进行解压安装"
|
|
tar zxvf docker-24.0.6.tar.gz
|
|
mv docker/docker.service /etc/systemd/system/docker.service
|
|
cp docker/* /usr/bin
|
|
else
|
|
logger "warning" "警告:未找到本地压缩包,无法进行本地安装"
|
|
return 1
|
|
fi
|
|
elif [ "$install_method" == "curl" ]; then
|
|
logger "info" "信息:尝试通过 curl 安装 Docker"
|
|
curl -fsSL https://get.docker.com | sh
|
|
elif [ "$install_method" == "yum" ]; then
|
|
logger "warning" "警告:尝试通过 Yum 安装 Docker"
|
|
sudo yum remove docker \
|
|
docker-client \
|
|
docker-client-latest \
|
|
docker-common \
|
|
docker-latest \
|
|
docker-latest-logrotate \
|
|
docker-logrotate \
|
|
docker-engine -y
|
|
|
|
sudo yum-config-manager \
|
|
--add-repo \
|
|
https://download.docker.com/linux/centos/docker-ce.repo
|
|
|
|
sudo yum install docker-ce -y
|
|
else
|
|
logger "error" "错误:无效的安装方法"
|
|
return 1
|
|
fi
|
|
|
|
systemctl daemon-reload
|
|
systemctl enable docker
|
|
systemctl start docker
|
|
logger "success" "成功:安装 Docker 并启动服务($install_method 方式)"
|
|
}
|
|
|
|
# 尝试本地安装
|
|
if install_docker "local"; then
|
|
exit 0
|
|
fi
|
|
|
|
# 尝试 curl 安装
|
|
if install_docker "curl"; then
|
|
exit 0
|
|
fi
|
|
|
|
# 尝试 yum 安装
|
|
install_docker "yum"
|
|
|
|
logger "info" "======================= 安装完成 =======================" |