#!/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