full_container_scheme/2.docker/docker-install

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" "======================= 安装完成 ======================="