记一次docker下启动jenkins遇到的坑

Precondition: Ubuntu20, 已装好docker

1.先从拉取镜像说起,我选择的是:jenkins/jenkins, 在这个镜像库中有最新的jenkins版本,方便未来在Jenkins界面中直接下载插件;

   运行命令:sudo docker pull jenkins/jenkins, 默认拉取最新的镜像,如果你需要下载指定的版本,请自行添加,例如,指定下载的版本为2.250,则命令为:sudo docker pull jenkins/jenkins:2.250

    *注意: docker hub上有着几种Jenkins镜像库,眼花缭乱:

                jenkins/jenkins(tag中有最近的镜像,支持最新的插件下载,也是我们现在所选择的)

                jenkins(几年前的镜像,很多插件都不支持线上下载)

                jenkinsci/jenkins(几年前的镜像,同上)       

2.运行Jenkins容器

  命令: 

docker run --name myjenkins -d --network host -v /home/test/myjenkins:/var/jenkins_home --env JAVA_OPTS="-Xmx8192m" --env JAVA_OPTS="-Duser.timezone=Asia/Shanghai" jenkins/jenkins:2.250

#参数解释:

  •     --name myjenkins:指定容器名称为myjenkins
  •     -d: 后台运行
  •     --network host: 网络模式指定为host模式,即直接使用宿主机的网络;你也可以使用默认的bridge模式,但bridge模式下需要使用-p参数指定端口映射:例如,-p 8080:8080 -p 50000:50000 (冒号(:)左边为宿主机的端口,右边为容器的端口)
  •     -v:挂载,实现数据持久化 (即便是删除容器后,只需将重新运行的容器保持之前的挂载,就能获取Jenkins之前保存的数据);将Jenkins挂载到宿主机的某个路径:/home/test/myjenkins,也是宿主机真实存在的路径,这个可以自己灵活创建;另外需要说明的是:/var/jenkins_home为官方规定的容器路径,不需要我们变动
  •     --env:传入变量,这个设置为可选项,示例中主要传入了与JVM相关的变量,例如,Xmx8182指定最大内存为:8192*1024字节,Duser.timezone=Asia/Shanghai:指定时区为Asia/Shanghai

3.赋予挂载权限,不然即便设置了挂载,也会因为没有权限而fail;而后 重启容器

命令:

sudo chown -R 1000:1000 /home/test/myjenkins

#设置权限后,重启上一步运行的Jenkins容器
sudo docker restart myjenkins

4.在浏览器中访问jenkins的页面(本机和其他机器皆可):我这里是使用的是另外一台电脑

第一次登录时需要填初始密码,除了直接查看密码保存的文件外,也可以通过查找jenkins的运行log来获取密码,例如:

命令:

#查看jenkins容器的运行日志
sudo docker logs -f myjenkins

5.登录后,遇见jenkins离线或者offline的问题,下为解决办法:

  • 找到宿主机中挂载的路径:/home/test/myjenkins,将该目录下的hudson.model.UpdateCenter.xml中的default url修改为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,当然你也可以修改为其他的镜像下载地址
  • 此时问题还没完全解决,还需要继续进行后面的操作:同样在挂载路径下继续找到:updates/default.json,修改default.json文件,修改完后,重启容器,命令:
    #将default.json文件中的"http://updates.jenkins-ci.org/download"全部替换 
    # 成"https://mirrors.tuna.tsinghua.edu.cn/jenkins"
    sed -i 's#http://updates.jenkins-ci.org/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json
    
    #继续将"http://www.google.com"全部替换成"https://www.baidu.com"
    sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json
    
    #修改完后,同样重启容器
    sudo docker restart myjenkins

     

  • 接下来,刷新Jenkins页面,正常来说,更新插件已无碍了

Ok,就记录到这里了。

 

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页