jenkins安装方式
·
完整示例:创建、打包和离线部署 Jenkins Docker 容器
一、在云服务器上创建并运行 Jenkins 容器
-
创建并启动基础容器
bash
# 创建并启动一个 Ubuntu 容器,映射 Jenkins 端口 docker run -itd \ --name jenkins-builder \ -p 8080:8080 \ -v jenkins-data:/var/jenkins_home \ ubuntu:20.04 /bin/bash -
进入容器并安装 Jenkins
bash
# 进入容器 docker exec -it jenkins-builder /bin/bash # 在容器内执行以下命令 apt-get update apt-get install -y openjdk-11-jre wget # 下载 Jenkins WAR 包 wget https://get.jenkins.io/war/2.541.3/jenkins.war -P /usr/share/jenkins/ #上面不行的话 #使用 wget https://get.jenkins.io/war-stable/latest/jenkins.war -P /usr/share/jenkins/ # 创建启动脚本 echo '#!/bin/bash java -Duser.timezone=Asia/Shanghai -jar /usr/share/jenkins/jenkins.war --httpPort=8080' > /usr/local/bin/start-jenkins.sh chmod +x /usr/local/bin/start-jenkins.sh # 设置环境变量 echo 'export JENKINS_HOME=/var/jenkins_home' >> /etc/environment source /etc/environment # 创建 Jenkins 数据目录 mkdir -p $JENKINS_HOME # 退出容器 exit -
启动 Jenkins 服务
bash
docker exec -d jenkins-builder /usr/local/bin/start-jenkins.sh
二、将运行中的容器打包为镜像
-
提交容器为新镜像
bash
docker commit jenkins-builder my-jenkins:2.541.3-offline -
验证新镜像
bash
docker images | grep my-jenkins
三、导出镜像以便离线使用
-
保存镜像为 tar 文件
bash
docker save -o my-jenkins-2.541.3.tar my-jenkins:2.541.3-offline -
压缩镜像文件(可选,减小体积)
bash
gzip my-jenkins-2.541.3.tar -
将文件传输到离线电脑
bash
# 使用 scp 或其他方式传输 scp my-jenkins-2.541.3.tar.gz user@offline-pc:/path/to/destination
四、在离线电脑上导入并运行 Jenkins
-
导入镜像
bash
# 解压(如果之前压缩了) gunzip my-jenkins-2.541.3.tar.gz # 导入镜像 docker load -i my-jenkins-2.541.3.tar -
运行 Jenkins 容器
bash
docker run -itd \ --name jenkins \ -p 8080:8080 \ -v jenkins-data:/var/jenkins_home \ my-jenkins:2.541.3-offline \ /usr/local/bin/start-jenkins.sh -
获取初始密码
bash
docker logs jenkins | grep "initialAdminPassword" -
访问 Jenkins
- 在浏览器中打开
http://localhost:8080 - 输入初始密码完成设置
- 在浏览器中打开
五、关键注意事项
-
数据持久化
- 必须使用
-v jenkins-data:/var/jenkins_home参数 - 这确保了即使容器被删除,Jenkins 配置和任务数据依然保存
- 必须使用
-
镜像大小优化
- 基础镜像使用
ubuntu:20.04会包含很多不必要的软件包 - 优化建议:使用
openjdk:11-jre-slim作为基础镜像,可减少 50% 以上的体积
- 基础镜像使用
-
时区设置
- 在启动命令中添加
-Duser.timezone=Asia/Shanghai确保时间正确 - 也可在 Dockerfile 中设置环境变量
ENV TZ=Asia/Shanghai
- 在启动命令中添加
-
离线环境验证
- 在离线电脑上运行前,确保 Docker 服务已启动
- 检查端口 8080 是否被占用
-
备份与恢复
- 定期备份
jenkins-data卷中的内容 - 可使用
docker volume inspect jenkins-data查看卷位置
- 定期备份
六、完整脚本示例
bash
#!/bin/bash
# 云服务器上执行
echo "=== 创建 Jenkins 容器 ==="
docker run -itd --name jenkins-builder -p 8080:8080 -v jenkins-data:/var/jenkins_home ubuntu:20.04 /bin/bash
echo "=== 安装 Jenkins ==="
docker exec jenkins-builder apt-get update
docker exec jenkins-builder apt-get install -y openjdk-11-jre wget
docker exec jenkins-builder wget https://get.jenkins.io/war/2.541.3/jenkins.war -P /usr/share/jenkins/
docker exec jenkins-builder bash -c 'echo "#!/bin/bash\njava -Duser.timezone=Asia/Shanghai -jar /usr/share/jenkins/jenkins.war --httpPort=8080" > /usr/local/bin/start-jenkins.sh'
docker exec jenkins-builder chmod +x /usr/local/bin/start-jenkins.sh
docker exec jenkins-builder bash -c 'echo "export JENKINS_HOME=/var/jenkins_home" >> /etc/environment'
docker exec jenkins-builder mkdir -p $JENKINS_HOME
echo "=== 启动 Jenkins ==="
docker exec -d jenkins-builder /usr/local/bin/start-jenkins.sh
echo "=== 打包为镜像 ==="
docker commit jenkins-builder my-jenkins:2.541.3-offline
echo "=== 导出镜像 ==="
docker save -o my-jenkins-2.541.3.tar my-jenkins:2.541.3-offline
gzip my-jenkins-2.541.3.tar
echo "=== 完成!请将 my-jenkins-2.541.3.tar.gz 传输到离线电脑 ==="
# 离线电脑上执行
echo "=== 离线电脑导入镜像 ==="
gunzip my-jenkins-2.541.3.tar.gz
docker load -i my-jenkins-2.541.3.tar
echo "=== 运行 Jenkins ==="
docker run -itd --name jenkins -p 8080:8080 -v jenkins-data:/var/jenkins_home my-jenkins:2.541.3-offline /usr/local/bin/start-jenkins.sh
echo "=== 获取初始密码 ==="
docker logs jenkins | grep "initialAdminPassword"
此方案确保了 Jenkins 环境的完整性和可移植性,同时保持了数据持久化和离线可用性。
更多推荐
所有评论(0)