一、安装
- 下载镜像
docker pull jenkins/jenkins:lts
一定要安装最新版的jenkins,如果安装旧版本,很多插件安装不上
- 查看已下好的docker镜像
docker images
- 查看是否是最新版 docker inspect
docker inspect jenkins/jenkins:lts
4. 创建一个jenkins目录【目前没用,以后有用】
mkdir /home/jenkins_home
- 启动容器
docker run -d --name Jenkins_01 -p 8081:8080 -v /home/jenkins_home:/home/jenkins_home jenkins/jenkins:lts
【注】可能会遇到iptables问题:
iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8080 -j DNAT --to-destination 192.168.40.142:8080 ! -i br-ff45d935188b: iptables: No chain/target/match by that name. (exit status 1)
重启docker
systemctl restart docker
- 查看启动的jenkins容器
docker ps|grep jenkins
- 网页查看 ip:8081
- 进入容器
docker exec -it Jenkins_01 /bin/bash
- 按照提示查看密码
cat /var/jenkins_home/secrets/initialAdminPassword
二、配置
- 安装推荐插件
【注】一般会出现插件安装不上问题
主要是插件源的问题,进入容器
docker exec -it Jenkins_01 /bin/bash
- 查看插件源
cat /var/jenkins_home/hudson.model.UpdateCenter.xml
可以先将插件源网址在浏览器上做测试,能访问到就可以,一般来说清华源比较快
将https://updates.jenkins.io/update-center.json源 替换为清华源
http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
sed –ri 's#<url>https://updates.jenkins.io/update-center.json</url>#<url>http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>#' /var/jenkins_home/hudson.model.UpdateCenter.xml
或者web界面修改:[管理jenkins]—[插件管理]—[Advanced]—[Update site]
【注】jenkins容器中没有vi,yum,还好sed能用
- 未安装好的推荐插件搜索下载
[管理jenkins]—[管理插件]—[可选插件]—[挨个搜索]—[直接安装]
【注】插件下载完可能会存在依赖问题
报错:workflow-support version 3.1 is missing. To fix, install version 3.1 or later.
解决:
在https://updates.jenkins.io/download/plugins/源中选择合适的hpi文件,手动添加
例:
https://updates.jenkins.io/download/plugins/workflow-support/
下载到本地
也适合离线少量插件的补充
【注】离线大量插件的处理办法
有网络的情况下,直接在容器中配置好插件,然后再进行配置,可以分为两个方向:
一、迁移
- 镜像迁移
导出jenkins镜像
docker save -o jenkins_v2.190.2.tar jenkins/jenkins:lts
导入
docker load < jenkins_v2.190.2.tar
数据可能会丢失
- 容器迁移
导出jenkins容器
docker export Jenkins_01 > jenkins_v2.190.2.tar
导入
docker import jenkins_v2.190.2.tar jenkins/jenkins:lts
数据可能也会丢失而且可能会出现docker: Error response from daemon: No command specified.
查看镜像详情
docker inspect jenkins/jenkins:lts
问题出现在容器没有cmd命令
可以执行创建命令,但不显示进程的错误
docker create jenkins/jenkins:lts /bin/bash
猜测可能是因为容器打包成镜像出现的错误
二、文件挂载或替换【推荐办法:安全性高】
- 将配置好的jenkins主目录导在宿主机上
docker cp Jenkins_01:/var/jenkins_home /home/jenkins_home/
- 将需要离线环境下的jenkins容器进行挂载运行【曲线救国】
docker run -itd -p 8081:8080 -v /home/jenkins_home:/home/jenkins_home/ jenkins:lts
【为什么不直接挂载到jenkins主目录下?】
答:会出现可以执行挂载命令,但不显示进程的错误
- 将jenkins主目录放在离线容器下,再进行替换
进入容器
docker exec - Jenkins_01 /bin/bash
cp替换【会报权限问题,可忽略】
cp -r /home/jenkins_home /var
- 最后重启jenkins容器,配置生效
docker restart Jenkins_01
即离线jenkins插件问题及依赖问题解决