拉取jenkins镜像
docker pull jenkins/jenkins:lts
这是最新版的jenkins 镜像,其他的jenkins镜像仓库都被官方弃用了
创建jenkins 容器
docker run -d -p 8090:8080 -p 50000:50000 \
-v /opt/jenkins_docker/:/var/jenkins_home \
-v /etc/localtime:/etc/localtime \
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \
--privileged=true \
--restart=always \
--name jenkins \
jenkins/jenkins:lts
-d:后台模式启动
-p 端口映射 将本地的 8090 端口绑定到容器的 8080 端口上
基于 JNLP 的 Jenkins 代理通过 TCP 端口 50000 与 Jenkins master 进行通信
-v:(挂载卷)主机的目录 /opt/jenkins 映射到容器的 /var/jenkins_home。
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai 修改jenkins的时区
–name:给新创建的容器命名,
–restart=always 当docker重启后 容器也会自动重启
docker ps -a
发现容器已经退出运行
我们查看日志
docker logs jenkins
发现是volume(j卷)的权限问题,当映射本地卷(/opt/jenkins)时,
/var/jenkins_home 的用户为root,jenkins的usr就没有访问权限,
我们用以下命令
docker run -ti --rm --entrypoint="/bin/bash" jenkins/jenkins:lts -c "whoami && id"
得知容器中jenkins user的uid为1000
此时 赋予 uid 1000 的文件操作权限
chown -R 1000:1000 /opt/jenkins
启动并查看日志
docker start jenkins &&
docker -t -f --tail 100 jenkins
jenkins正常启动,但是在日志中 有可能发现以下错误日志
说明,这个地址连接超时,下在插件会失败,有两个解决办法
首先在挂载的/opt/jenkins目录下找到hudson.model.UpdateCenter.xml
文件
vi hudson.model.UpdateCenter.xml
第一种:将https://updates.jenkins.io/update-center.json
的s去掉
第二种:换成国内的链接,
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
然后重启容器
docker restart jenkins
打开网址
http://xxx.xxx.32.xxx:8090
出现
至此安装成功!
解锁jenkins
jenkins启动后,使用docker logs jenkins
第一个红框即jenkins 初始密码 这个密码保存在第二个红框路径下
同时 挂载在/opt/jenkins目录下
输入密码后,可能提示
解决方法如下:
修改hudson.model.UpdateCenter.xml
,方法再上文中⬆
修改/opt/jenkins/updates/default.json
因jenkins在安装插件时需要检查网络,默认是访问google的
我们需要改成百度的www.baidu.com
插件下载加速
sed -i 's#http://updates.jenkins-ci.org/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json
该好后 重启jenkins 无日志异常
docker restart jenkins && docker logs -t -f --tail 100 jenkins
插件安装 选择新手入门
创建账户
实例配置
配置jenkins
点击Manage Jenkins ==> Global Tool Configuration
1. 配置 Git
如果发现如下提示
发现默认配置的git 找不到执行文件地址
这时我们
进入容器
docker exec -it 7a7cb53e9f78 /bin/bash
查看容器虚拟主机系统版本
cat /etc/issue
Docker 退出容器不停止容器运行
Ctrl+P+Q
查看git版本 确定git是否自动安装,并且查询git安装地址
git --version && whereis git
将这个地址填入
解决问题
配置Git 拉取凭据
添加ssh
为什么配置ssh私钥?jenkins 将用这个私钥去和git仓库建立连接
仓库 配置 ssh公钥
git 配置完成
2. 配置JDK
在jenkins 挂载的文件下创建global_env文件夹,
上传jdk解压
在Manage Jenkins ==> Global Tool Configuration
重启jenkins / jenkins 容器即可使用
新增jdk配置
jenkins 在容器里工作所以这里填写 jenkins 挂载卷 所对应的目录
只要配置了jdk 你的项目就会优先使用你配置的jdk
更换容内的jdk
- 复制解压后的jdk到 容器的
/usr/local
下docker cp jdk-1.8_dragonwell_8.4.4 <容器名称或者ID>:/usr/local
- 进入容器
-u root
以root权限进入否则出现权限问题docker exec -it -u root <容器名称或者ID> bash
- 安装
Vim
(可选)apt-get update apt-get install vim
- 设置
JAVA
环境变量vim /etc/profile
export JAVA_HOME=/usr/local/jdk-1.8_dragonwell_8.4.4 export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
java -version
- 退出容器并重启
exit docker restart <容器名称或者ID>
更换容器类的jenkins 包
-
同理以root用户进入jenkins容器
docker exec -it -u root <容器名称或者ID> bash
-
查看容器中jenkins war包的位置,并备份原来的war包
whereis jenkins cd /usr/share/jenkins cp jenkins.war jenkins.war.bak
-
在容器中下载jenkins的最新war包
wget http://mirrors.jenkins.io/war/latest/jenkins.war
-
退出容器并重启
exit docker restart <容器名称或者ID>