3
0

run-docker.sh

2025-11-28
2026-09-07
#!/bin/sh
# Jenkins容器内Docker一键安装脚本(适配Debian/Ubuntu系Jenkins镜像)

# 切换到root用户(Jenkins容器默认是jenkins用户,需root权限)
if [ "$(id -u)" != "0" ]; then
    echo "=== 切换到root用户执行 ==="
    if command -v sudo >/dev/null 2>&1; then
        sudo -i "$0" "$@"
        exit $?
    elif [ -f /bin/bash ]; then
        su - root -c "/bin/bash $0 $@"
        exit $?
    else
        su - root -c "sh $0 $@"
        exit $?
    fi
fi

# 1. 补全基础依赖(Jenkins容器精简版缺失的工具)
echo "=== 安装基础依赖包 ==="
apt update -y && apt install -y \
    bash curl gnupg apt-transport-https ca-certificates lsb-release \
    software-properties-common

# 2. 下载Docker安装脚本到本地(避免进程替换兼容性问题)
echo "=== 下载Docker安装脚本 ==="
DOCKER_SCRIPT="/tmp/docker_install.sh"
curl -f -s --connect-timeout 10 --retry 3 \
    https://linuxmirrors.cn/docker.sh -o "$DOCKER_SCRIPT"

# 3. 赋予执行权限并执行安装
echo "=== 执行Docker安装脚本 ==="
chmod +x "$DOCKER_SCRIPT"
/bin/bash "$DOCKER_SCRIPT" \
    --source mirrors.tencent.com/docker-ce \
    --source-registry docker.1ms.run \
    --protocol https \
    --install-latested true \
    --close-firewall false \
    --ignore-backup-tips

# 4. 配置Jenkins用户Docker权限(避免后续执行docker命令权限不足)
echo "=== 配置Jenkins用户Docker权限 ==="
if id "jenkins" >/dev/null 2>&1; then
    usermod -aG docker jenkins
    echo "已将jenkins用户加入docker组,需重启容器生效!"
fi

# 5. 清理临时文件
rm -f "$DOCKER_SCRIPT"

echo "=== Docker安装完成 ==="
echo "验证Docker状态:"
docker --version
systemctl status docker || service docker status
run-docker.sh
/archives/017-run-docker.sh
作者
Administrator
发布于
2025-11-28
许可协议
CC BY-NC-SA 4.0

评论