一、安装

  1. 下载镜像
docker pull jenkins/jenkins:lts

一定要安装最新版的jenkins,如果安装旧版本,很多插件安装不上

  1. 查看已下好的docker镜像
docker images

docker build 不依赖缓存 docker依赖包_Jenkins

  1. 查看是否是最新版 docker inspect
docker inspect jenkins/jenkins:lts

docker build 不依赖缓存 docker依赖包_Jenkins_02


4. 创建一个jenkins目录【目前没用,以后有用】

mkdir /home/jenkins_home
  1. 启动容器
docker run -d --name Jenkins_01 -p 8081:8080 -v /home/jenkins_home:/home/jenkins_home jenkins/jenkins:lts

docker build 不依赖缓存 docker依赖包_docker_03


【注】可能会遇到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
  1. 查看启动的jenkins容器
docker ps|grep jenkins

docker build 不依赖缓存 docker依赖包_Jenkins_04

  1. 网页查看 ip:8081
  2. docker build 不依赖缓存 docker依赖包_docker build 不依赖缓存_05


  3. docker build 不依赖缓存 docker依赖包_Jenkins_06

  4. 进入容器
docker exec -it Jenkins_01 /bin/bash

docker build 不依赖缓存 docker依赖包_离线_07

  1. 按照提示查看密码
cat /var/jenkins_home/secrets/initialAdminPassword

docker build 不依赖缓存 docker依赖包_离线_08

二、配置

  1. 安装推荐插件

【注】一般会出现插件安装不上问题
主要是插件源的问题,进入容器

docker exec -it Jenkins_01 /bin/bash
  1. 查看插件源
cat /var/jenkins_home/hudson.model.UpdateCenter.xml

docker build 不依赖缓存 docker依赖包_Jenkins_09

可以先将插件源网址在浏览器上做测试,能访问到就可以,一般来说清华源比较快
将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]

docker build 不依赖缓存 docker依赖包_docker build 不依赖缓存_10


【注】jenkins容器中没有vi,yum,还好sed能用

  1. 未安装好的推荐插件搜索下载

[管理jenkins]—[管理插件]—[可选插件]—[挨个搜索]—[直接安装]

docker build 不依赖缓存 docker依赖包_离线_11


docker build 不依赖缓存 docker依赖包_离线_12


docker build 不依赖缓存 docker依赖包_Jenkins_13

【注】插件下载完可能会存在依赖问题
报错: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/

下载到本地

docker build 不依赖缓存 docker依赖包_docker build 不依赖缓存_14

docker build 不依赖缓存 docker依赖包_离线_15


docker build 不依赖缓存 docker依赖包_docker_16

也适合离线少量插件的补充

【注】离线大量插件的处理办法

有网络的情况下,直接在容器中配置好插件,然后再进行配置,可以分为两个方向:

docker build 不依赖缓存 docker依赖包_docker_17

一、迁移

  1. 镜像迁移
    导出jenkins镜像
docker save -o jenkins_v2.190.2.tar jenkins/jenkins:lts

导入

docker load < jenkins_v2.190.2.tar

数据可能会丢失

  1. 容器迁移
    导出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 build 不依赖缓存 docker依赖包_Jenkins_18


查看镜像详情

docker inspect jenkins/jenkins:lts

问题出现在容器没有cmd命令

docker build 不依赖缓存 docker依赖包_docker_19


可以执行创建命令,但不显示进程的错误

docker create jenkins/jenkins:lts /bin/bash

docker build 不依赖缓存 docker依赖包_docker_20


猜测可能是因为容器打包成镜像出现的错误

二、文件挂载或替换【推荐办法:安全性高】

  1. 将配置好的jenkins主目录导在宿主机上
docker cp Jenkins_01:/var/jenkins_home /home/jenkins_home/
  1. 将需要离线环境下的jenkins容器进行挂载运行【曲线救国】
docker run -itd -p 8081:8080 -v /home/jenkins_home:/home/jenkins_home/ jenkins:lts

【为什么不直接挂载到jenkins主目录下?】
答:会出现可以执行挂载命令,但不显示进程的错误

  1. 将jenkins主目录放在离线容器下,再进行替换
    进入容器
docker exec - Jenkins_01 /bin/bash

cp替换【会报权限问题,可忽略】

cp -r /home/jenkins_home /var
  1. 最后重启jenkins容器,配置生效
docker restart Jenkins_01

即离线jenkins插件问题及依赖问题解决