增加多Docker APT仓库支持,优先使用国内源
This commit is contained in:
parent
2927eb835b
commit
db030150c4
60
jsite.sh
60
jsite.sh
@ -1119,23 +1119,57 @@ install_docker() {
|
||||
apt-get update
|
||||
|
||||
# 安装必要的包(避免交互式配置)
|
||||
apt-get install -y --force-yes apt-transport-https ca-certificates curl gnupg lsb-release
|
||||
apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
|
||||
|
||||
# 添加Docker官方GPG密钥(非交互式)
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --batch --yes --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
||||
# 选择可用的 Docker APT 仓库与 GPG 地址(带回退)
|
||||
local arch=$(dpkg --print-architecture)
|
||||
local codename=$(lsb_release -cs)
|
||||
local mirror_candidates=(
|
||||
"https://mirrors.aliyun.com/docker-ce"
|
||||
"https://mirrors.ccs.tencentyun.com/docker-ce"
|
||||
"https://mirrors.ustc.edu.cn/docker-ce"
|
||||
"https://mirrors.tuna.tsinghua.edu.cn/docker-ce"
|
||||
"https://download.docker.com"
|
||||
)
|
||||
local chosen_base=""
|
||||
local chosen_gpg=""
|
||||
|
||||
# 设置稳定版仓库
|
||||
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
for base in "${mirror_candidates[@]}"; do
|
||||
log_info "尝试Docker镜像: ${base}"
|
||||
if curl -fsSL --connect-timeout 5 "${base}/linux/ubuntu/gpg" >/dev/null 2>&1; then
|
||||
chosen_base="$base"
|
||||
chosen_gpg="${base}/linux/ubuntu/gpg"
|
||||
log_success "选择Docker镜像: ${base}"
|
||||
break
|
||||
else
|
||||
log_warning "镜像不可达,继续回退: ${base}"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$chosen_base" ]; then
|
||||
log_error "无法访问任一 Docker APT 镜像,请检查网络(尤其是443端口)或稍后重试"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 添加Docker GPG密钥
|
||||
curl -fsSL "$chosen_gpg" | gpg --batch --yes --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg || {
|
||||
log_error "下载或导入Docker GPG密钥失败: $chosen_gpg"
|
||||
return 1
|
||||
}
|
||||
|
||||
# 写入APT源
|
||||
echo "deb [arch=${arch} signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] ${chosen_base}/linux/ubuntu ${codename} stable" \
|
||||
> /etc/apt/sources.list.d/docker.list
|
||||
|
||||
# 更新包索引
|
||||
apt-get update
|
||||
|
||||
# 安装Docker Engine(避免交互式配置)
|
||||
apt-get install -y --force-yes docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||
|
||||
# 启动Docker服务
|
||||
systemctl start docker
|
||||
systemctl enable docker
|
||||
systemctl start docker || true
|
||||
systemctl enable docker || true
|
||||
|
||||
log_success "Docker安装完成"
|
||||
fi
|
||||
@ -1160,19 +1194,19 @@ EOF
|
||||
|
||||
# 重新加载systemd配置并重启Docker服务
|
||||
log_info "重新加载systemd配置并重启Docker服务..."
|
||||
systemctl daemon-reload
|
||||
systemctl restart docker
|
||||
systemctl daemon-reload || true
|
||||
systemctl restart docker || true
|
||||
|
||||
# 验证配置是否生效
|
||||
log_info "验证Docker镜像仓库配置..."
|
||||
if docker info | grep -q "k487mmwn.mirror.aliyuncs.com"; then
|
||||
if docker info 2>/dev/null | grep -q "k487mmwn.mirror.aliyuncs.com"; then
|
||||
log_success "Docker镜像仓库配置成功"
|
||||
else
|
||||
log_warning "Docker镜像仓库配置可能未生效,请手动检查"
|
||||
fi
|
||||
|
||||
# 将jingrow用户添加到docker组
|
||||
usermod -aG docker jingrow
|
||||
usermod -aG docker jingrow || true
|
||||
log_success "将jingrow用户添加到docker组"
|
||||
}
|
||||
|
||||
@ -1193,7 +1227,7 @@ install_jq() {
|
||||
apt-get update
|
||||
|
||||
# 安装jq工具
|
||||
apt-get install -y --force-yes jq
|
||||
apt-get install -y jq
|
||||
|
||||
if command -v jq &> /dev/null; then
|
||||
log_success "jq工具安装完成"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user