制作步骤
1.编写Dockerfile文件。
2.从下一步骤开始。所有文件都在jenkins中文社区寻找。但是不能在windows系统创建。因为系统文件格式 不同。jenkins启动时会报错。
3.创建init.groovy文件。
4.创建hudson.model.UpdateCenter.xml
5.创建mirror-adapter.crt
6.制作镜像
7.启动容器,试运行镜像
8.jenkins工作台操作,检验插件下载速度
9.停止容器
10.删除容器 备份镜像
基础镜像
docker pull jenkins/jenkins:2.204.5-alpine
Dockerfile
在基础镜像中增加时区修正。安装常用软件。更新jenkins插件为中文社区地址
FROM jenkins/jenkins:2.204.5-alpine
#自定义jenkins镜像
# 作者信息
MAINTAINER war kubernete jenkins "admin@lagou.com"
# 修改源
USER root RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" >>
/etc/apk/repositories && \
echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories
# 安装需要的软件,解决时区问题
RUN apk --update add curl bash tzdata && \
rm -rf /var/cache/apk/*
#修改镜像为东八区时间
ENV TZ Asia/Shanghai
ENV JENKINS_UC https://updates.jenkins-zh.cn
ENV JENKINS_UC_DOWNLOAD https://mirrors.tuna.tsinghua.edu.cn/jenkins
ENV JENKINS_OPTS="- Dhudson.model.UpdateCenter.updateCenterUrl=https://updates.jenkins-zh.cn/update- center.json"
ENV JENKINS_OPTS="-Djenkins.install.runSetupWizard=false"
COPY init.groovy /usr/share/jenkins/ref/init.groovy.d/init.groovy
COPY hudson.model.UpdateCenter.xml /usr/share/jenkins/ref/hudson.model.UpdateCenter.xml
COPY mirror-adapter.crt /usr/share/jenkins/ref/mirror-adapter.crt
init.groovy
在github的jenkins中文社区中找到文件,复制文件内容
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import hudson.init.InitMilestone;
import jenkins.model.Jenkins;
Thread.start {
while(true) {
Jenkins instance = Jenkins.getInstance();
InitMilestone initLevel = instance.getInitLevel();
Thread.sleep(1500L);
println "Jenkins not ready when handle init config..."
if (initLevel >= InitMilestone.PLUGINS_STARTED) {
InputStream input = new FileInputStream("/usr/share/jenkins/ref/mirror- adapter.crt")
FileOutputStream out = new FileOutputStream(System.getenv("JENKINS_HOME") + "/war/WEB-INF/update-center-rootCAs/mirror-adapter.crt");
byte[] buf = new byte[1024];
int count = -1;
while((count = input.read(buf)) > 0) {
out.write(buf, 0, count);
}
println "Jenkins init ready..."
break
}
}
}
hudson.model.UpdateCenter.xml
在github的jenkins中文社区中找到文件,复制文件内容。更换插件安装地址为国内插件地址
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://updates.jenkins-zh.cn/update-center.json</url>
</site>
</sites>
mirror-adapter.crt
在github的jenkins中文社区中找到文件,复制文件内容。jenkins官方配置2对秘钥,一对是jenkins官网使用。这一对是jenkins中文社区使用。更新秘钥后。下载地址更新为国内地址。
-----BEGIN CERTIFICATE-----
MIICcTCCAdoCCQD/jZ7AgrzJKTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJD
TjELMAkGA1UECAwCR0QxCzAJBgNVBAcMAlNaMQ4wDAYDVQQKDAV2aWhvbzEMMAoG
A1UECwwDZGV2MREwDwYDVQQDDAhkZW1vLmNvbTEjMCEGCSqGSIb3DQEJARYUYWRt
aW5AamVua2lucy16aC5jb20wHhcNMTkxMTA5MTA0MDA5WhcNMjIxMTA4MTA0MDA5
WjB9MQswCQYDVQQGEwJDTjELMAkGA1UECAwCR0QxCzAJBgNVBAcMAlNaMQ4wDAYD
VQQKDAV2aWhvbzEMMAoGA1UECwwDZGV2MREwDwYDVQQDDAhkZW1vLmNvbTEjMCEG
CSqGSIb3DQEJARYUYWRtaW5AamVua2lucy16aC5jb20wgZ8wDQYJKoZIhvcNAQEB
BQADgY0AMIGJAoGBAN+6jN8rCIjVkQ0Q7ZbJLk4IdcHor2WdskOQMhlbR0gOyb4g
RX+CorjDRjDm6mj2OohqlrtRxLGYxBnXFeQGU7wWjQHyfKDghtP51G/672lXFtzB
KXukHByHjtzrDxAutKTdolyBCuIDDGJmRk+LavIBY3/Lxh6f0ZQSeCSJYiyxAgMB
AAEwDQYJKoZIhvcNAQELBQADgYEAD92l26PoJcbl9GojK2L3pyOQjeeDm/vV9e3R
EgwGmoIQzlubM0mjxpCz1J73nesoAcuplTEps/46L7yoMjptCA3TU9FZAHNQ8dbz
a0vm4CF9841/FIk8tsLtwCT6ivkAi0lXGwhX0FK7FaAyU0nNeo/EPvDwzTim4XDK
9j1WGpE=
-----END CERTIFICATE-----
制作镜像
docker build --rm -t lagou/jenkins:2.204.5-alpine .
启动容器
创建映射目录
mkdir -p /data/jenkins && chown -R 1000:1000 /data/jenkins
运行容器
docker run -itd --name jenkins -p 8080:8080 -p 50000:50000 -u root -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --restart=always -v /data/jenkins/:/var/jenkins_home/ lagou/jenkins:2.204.6-alpine
查看容器启动日志并找到jenkins初始化密码
docker logs -f jenkins
测试镜像
http://192.168.198.153:8080
安装插件
安装jenkins默认插件,观察下载速度。
删除镜像
停止容器
docker stop jenkins
删除容器
docker rm jenkins
备份镜像
docker save lagou/jenkins:2.204.5-alpine -o lagou.jenkins:2.204.5-alpine.tar
或者将镜像上传harbor私服
网友评论