Create Docker 24.0.5
This commit is contained in:
208
Docker 24.0.5
Normal file
208
Docker 24.0.5
Normal file
@@ -0,0 +1,208 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo " Docker 24.0.5 一键离线安装脚本"
|
||||||
|
echo "=========================================="
|
||||||
|
|
||||||
|
# 颜色定义
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
# 日志函数
|
||||||
|
log_info() {
|
||||||
|
echo -e "${GREEN}[INFO]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
log_warn() {
|
||||||
|
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
log_error() {
|
||||||
|
echo -e "${RED}[ERROR]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 检查root权限
|
||||||
|
check_root() {
|
||||||
|
if [[ $EUID -ne 0 ]]; then
|
||||||
|
log_error "请使用root权限运行此脚本"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 安装依赖
|
||||||
|
install_dependencies() {
|
||||||
|
log_info "安装系统依赖..."
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y \
|
||||||
|
curl \
|
||||||
|
wget \
|
||||||
|
gnupg \
|
||||||
|
lsb-release \
|
||||||
|
apt-transport-https \
|
||||||
|
ca-certificates \
|
||||||
|
software-properties-common \
|
||||||
|
iptables \
|
||||||
|
net-tools
|
||||||
|
}
|
||||||
|
|
||||||
|
# 清理有问题的docker源
|
||||||
|
clean_docker_sources() {
|
||||||
|
log_info "清理有问题的Docker源..."
|
||||||
|
if [ -f "/etc/apt/sources.list.d/docker.list" ]; then
|
||||||
|
mv /etc/apt/sources.list.d/docker.list /etc/apt/sources.list.d/docker.list.backup.$(date +%Y%m%d%H%M%S)
|
||||||
|
log_info "已备份并清理原有docker源配置"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 下载Docker 24.0.5离线包
|
||||||
|
download_docker_packages() {
|
||||||
|
log_info "创建临时下载目录..."
|
||||||
|
DOWNLOAD_DIR="/tmp/docker-offline-24.0.5"
|
||||||
|
mkdir -p $DOWNLOAD_DIR
|
||||||
|
cd $DOWNLOAD_DIR
|
||||||
|
|
||||||
|
log_info "开始下载Docker 24.0.5离线安装包..."
|
||||||
|
|
||||||
|
# Docker 24.0.5 组件包
|
||||||
|
packages=(
|
||||||
|
"containerd.io_1.6.21-1_amd64.deb"
|
||||||
|
"docker-ce_24.0.5-1~ubuntu.20.04~focal_amd64.deb"
|
||||||
|
"docker-ce-cli_24.0.5-1~ubuntu.20.04~focal_amd64.deb"
|
||||||
|
"docker-buildx-plugin_0.11.2-1~ubuntu.20.04~focal_amd64.deb"
|
||||||
|
"docker-compose-plugin_2.20.2-1~ubuntu.20.04~focal_amd64.deb"
|
||||||
|
)
|
||||||
|
|
||||||
|
# 下载URL基础路径(这里使用官方源,您可以根据需要替换为内网源)
|
||||||
|
BASE_URL="https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64"
|
||||||
|
|
||||||
|
for package in "${packages[@]}"; do
|
||||||
|
if [ ! -f "$package" ]; then
|
||||||
|
log_info "下载: $package"
|
||||||
|
wget -q "$BASE_URL/$package"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log_error "下载失败: $package"
|
||||||
|
log_info "尝试备用下载源..."
|
||||||
|
# 备用下载源
|
||||||
|
wget -q "https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/focal/pool/stable/amd64/$package" || {
|
||||||
|
log_error "备用源也下载失败: $package"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log_info "文件已存在: $package"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
log_info "所有Docker组件下载完成!"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 安装Docker组件
|
||||||
|
install_docker_packages() {
|
||||||
|
log_info "开始安装Docker组件..."
|
||||||
|
DOWNLOAD_DIR="/tmp/docker-offline-24.0.5"
|
||||||
|
cd $DOWNLOAD_DIR
|
||||||
|
|
||||||
|
# 安装顺序很重要
|
||||||
|
dpkg -i containerd.io_1.6.21-1_amd64.deb
|
||||||
|
dpkg -i docker-ce-cli_24.0.5-1~ubuntu.20.04~focal_amd64.deb
|
||||||
|
dpkg -i docker-ce_24.0.5-1~ubuntu.20.04~focal_amd64.deb
|
||||||
|
dpkg -i docker-buildx-plugin_0.11.2-1~ubuntu.20.04~focal_amd64.deb
|
||||||
|
dpkg -i docker-compose-plugin_2.20.2-1~ubuntu.20.04~focal_amd64.deb
|
||||||
|
|
||||||
|
log_info "Docker组件安装完成!"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 配置Docker服务
|
||||||
|
configure_docker() {
|
||||||
|
log_info "配置Docker服务..."
|
||||||
|
|
||||||
|
# 创建docker用户组
|
||||||
|
groupadd docker 2>/dev/null || true
|
||||||
|
|
||||||
|
# 配置docker daemon
|
||||||
|
mkdir -p /etc/docker
|
||||||
|
cat > /etc/docker/daemon.json << EOF
|
||||||
|
{
|
||||||
|
"exec-opts": ["native.cgroupdriver=systemd"],
|
||||||
|
"log-driver": "json-file",
|
||||||
|
"log-opts": {
|
||||||
|
"max-size": "100m"
|
||||||
|
},
|
||||||
|
"storage-driver": "overlay2",
|
||||||
|
"registry-mirrors": [
|
||||||
|
"https://docker.mirrors.ustc.edu.cn",
|
||||||
|
"https://hub-mirror.c.163.com"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 启动并启用docker服务
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable docker
|
||||||
|
systemctl start docker
|
||||||
|
|
||||||
|
log_info "等待Docker服务启动..."
|
||||||
|
sleep 5
|
||||||
|
}
|
||||||
|
|
||||||
|
# 验证安装
|
||||||
|
verify_installation() {
|
||||||
|
log_info "验证Docker安装..."
|
||||||
|
|
||||||
|
# 检查docker版本
|
||||||
|
docker --version
|
||||||
|
docker-compose --version
|
||||||
|
|
||||||
|
# 测试运行容器
|
||||||
|
if systemctl is-active --quiet docker; then
|
||||||
|
log_info "测试运行hello-world容器..."
|
||||||
|
docker run --rm hello-world && {
|
||||||
|
log_info "✅ Docker安装验证成功!"
|
||||||
|
} || {
|
||||||
|
log_warn "Docker服务运行但hello-world测试失败,可能是网络问题"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
log_error "Docker服务未运行"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 显示使用说明
|
||||||
|
show_usage() {
|
||||||
|
log_info "安装完成!使用说明:"
|
||||||
|
echo ""
|
||||||
|
echo "1. 启动Docker服务: systemctl start docker"
|
||||||
|
echo "2. 停止Docker服务: systemctl stop docker"
|
||||||
|
echo "3. 查看Docker状态: systemctl status docker"
|
||||||
|
echo "4. 添加用户到docker组: usermod -aG docker \$USER"
|
||||||
|
echo "5. 重新登录后即可不使用sudo运行docker命令"
|
||||||
|
echo ""
|
||||||
|
echo "Docker版本: 24.0.5"
|
||||||
|
echo "Compose版本: 2.20.2"
|
||||||
|
echo "Buildx版本: 0.11.2"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主函数
|
||||||
|
main() {
|
||||||
|
log_info "开始Docker 24.0.5一键安装..."
|
||||||
|
|
||||||
|
check_root
|
||||||
|
install_dependencies
|
||||||
|
clean_docker_sources
|
||||||
|
download_docker_packages
|
||||||
|
install_docker_packages
|
||||||
|
configure_docker
|
||||||
|
verify_installation
|
||||||
|
show_usage
|
||||||
|
|
||||||
|
log_info "Docker 24.0.5 安装完成!"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 错误处理
|
||||||
|
trap 'log_error "脚本执行失败,退出码: $?"; exit 1' ERR
|
||||||
|
|
||||||
|
# 执行主函数
|
||||||
|
main "$@"
|
||||||
Reference in New Issue
Block a user