191 lines
5.6 KiB
Bash
Executable File
191 lines
5.6 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Docker和Docker Compose安装脚本
|
||
# 支持CentOS/RHEL 7+, Ubuntu 18.04+, Debian 9+
|
||
|
||
set -e
|
||
|
||
echo "=== Docker和Docker Compose安装脚本 ==="
|
||
|
||
# 检测操作系统
|
||
if [ -f /etc/os-release ]; then
|
||
. /etc/os-release
|
||
OS=$NAME
|
||
VER=$VERSION_ID
|
||
else
|
||
echo "[错误] 无法检测操作系统版本"
|
||
exit 1
|
||
fi
|
||
|
||
echo "[信息] 检测到操作系统: $OS $VER"
|
||
|
||
# 检查是否已安装Docker
|
||
if command -v docker >/dev/null 2>&1; then
|
||
echo "[信息] Docker已安装: $(docker --version)"
|
||
DOCKER_INSTALLED=true
|
||
else
|
||
echo "[信息] Docker未安装,准备安装..."
|
||
DOCKER_INSTALLED=false
|
||
fi
|
||
|
||
# 检查是否已安装Docker Compose
|
||
if command -v docker-compose >/dev/null 2>&1; then
|
||
echo "[信息] Docker Compose已安装: $(docker-compose --version)"
|
||
COMPOSE_INSTALLED=true
|
||
else
|
||
echo "[信息] Docker Compose未安装,准备安装..."
|
||
COMPOSE_INSTALLED=false
|
||
fi
|
||
|
||
# 安装Docker
|
||
install_docker() {
|
||
case "$OS" in
|
||
"Ubuntu"|"Debian GNU/Linux")
|
||
echo "[信息] 在Ubuntu/Debian上安装Docker..."
|
||
|
||
# 更新包索引
|
||
sudo apt-get update
|
||
|
||
# 安装必要的包
|
||
sudo apt-get install -y \
|
||
apt-transport-https \
|
||
ca-certificates \
|
||
curl \
|
||
gnupg \
|
||
lsb-release
|
||
|
||
# 添加Docker官方GPG密钥
|
||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
||
|
||
# 设置稳定版仓库
|
||
echo \
|
||
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
|
||
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||
|
||
# 安装Docker Engine
|
||
sudo apt-get update
|
||
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
|
||
;;
|
||
|
||
"CentOS Linux"|"Red Hat Enterprise Linux")
|
||
echo "[信息] 在CentOS/RHEL上安装Docker..."
|
||
|
||
# 安装必要的包
|
||
sudo yum install -y yum-utils
|
||
|
||
# 设置稳定版仓库
|
||
sudo yum-config-manager \
|
||
--add-repo \
|
||
https://download.docker.com/linux/centos/docker-ce.repo
|
||
|
||
# 安装Docker Engine
|
||
sudo yum install -y docker-ce docker-ce-cli containerd.io
|
||
;;
|
||
|
||
*)
|
||
echo "[错误] 不支持的操作系统: $OS"
|
||
echo "请手动安装Docker: https://docs.docker.com/engine/install/"
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
# 启动Docker服务
|
||
sudo systemctl start docker
|
||
sudo systemctl enable docker
|
||
|
||
# 将当前用户添加到docker组
|
||
sudo usermod -aG docker $USER
|
||
|
||
echo "[成功] Docker安装完成"
|
||
}
|
||
|
||
# 安装Docker Compose
|
||
install_docker_compose() {
|
||
echo "[信息] 安装Docker Compose..."
|
||
|
||
# 获取最新版本号
|
||
COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)
|
||
|
||
if [ -z "$COMPOSE_VERSION" ]; then
|
||
echo "[警告] 无法获取最新版本,使用默认版本 v2.20.2"
|
||
COMPOSE_VERSION="v2.20.2"
|
||
fi
|
||
|
||
echo "[信息] 下载Docker Compose $COMPOSE_VERSION..."
|
||
|
||
# 下载Docker Compose
|
||
sudo curl -L "https://github.com/docker/compose/releases/download/$COMPOSE_VERSION/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||
|
||
# 设置执行权限
|
||
sudo chmod +x /usr/local/bin/docker-compose
|
||
|
||
# 创建符号链接(如果需要)
|
||
if [ ! -f /usr/bin/docker-compose ]; then
|
||
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
|
||
fi
|
||
|
||
echo "[成功] Docker Compose安装完成"
|
||
}
|
||
|
||
# 验证安装
|
||
verify_installation() {
|
||
echo "[信息] 验证安装..."
|
||
|
||
if docker --version >/dev/null 2>&1; then
|
||
echo "[成功] Docker: $(docker --version)"
|
||
else
|
||
echo "[错误] Docker安装失败"
|
||
return 1
|
||
fi
|
||
|
||
if docker-compose --version >/dev/null 2>&1; then
|
||
echo "[成功] Docker Compose: $(docker-compose --version)"
|
||
else
|
||
echo "[错误] Docker Compose安装失败"
|
||
return 1
|
||
fi
|
||
|
||
# 测试Docker是否可以运行
|
||
if sudo docker run --rm hello-world >/dev/null 2>&1; then
|
||
echo "[成功] Docker运行测试通过"
|
||
else
|
||
echo "[警告] Docker运行测试失败,可能需要重新登录或重启系统"
|
||
fi
|
||
}
|
||
|
||
# 主安装流程
|
||
main() {
|
||
# 检查是否为root用户或有sudo权限
|
||
if [ "$EUID" -eq 0 ]; then
|
||
echo "[警告] 检测到root用户,建议使用普通用户运行此脚本"
|
||
elif ! sudo -n true 2>/dev/null; then
|
||
echo "[错误] 需要sudo权限来安装Docker"
|
||
exit 1
|
||
fi
|
||
|
||
# 安装Docker
|
||
if [ "$DOCKER_INSTALLED" = false ]; then
|
||
install_docker
|
||
fi
|
||
|
||
# 安装Docker Compose
|
||
if [ "$COMPOSE_INSTALLED" = false ]; then
|
||
install_docker_compose
|
||
fi
|
||
|
||
# 验证安装
|
||
verify_installation
|
||
|
||
echo ""
|
||
echo "=== 安装完成 ==="
|
||
echo ""
|
||
echo "注意事项:"
|
||
echo "1. 如果这是首次安装Docker,请重新登录或运行 'newgrp docker' 来刷新用户组"
|
||
echo "2. 确保Docker服务正在运行: sudo systemctl status docker"
|
||
echo "3. 现在可以运行DMS合规性测试工具的部署脚本了"
|
||
echo ""
|
||
}
|
||
|
||
# 运行主函数
|
||
main "$@"
|