Jenkins 2.492.3 Docker 速配

  • Jenkins镜像内的用户uid是1000,为了方便后续关于公钥密钥的配置,先检查宿主机是否存在uid是1000的用户

    使用docker部署jenkins,需要注意

    容器内的jenkins的uid是1000,如果要配置ssh的方式,且为了避免重新构建镜像公钥密钥得重弄,

    所以先查看本机1000的用户是啥,能不能复用

    可以查看哪个用户是1000,能复用最好,不能复用就比较麻烦了,需要在容器里添加你想要的uid

    getent passwd 1000

  • 创建用户&授权挂载目录权限

    如过没有对应的用户,那就可以新建

    sudo adduser jenkins
    sudo mkdir jenkins-data

    也查询当前用户的值,这里有可能不是1000,我后来直接用1000的用户了,否则需要重新构建镜像,没太大必要

    id -u jenkins
    id -g jenkins

    创建docker的宿主机挂载文件夹并,授权

    mkdir jenkins-data
    sudo chown -R 1000:1000 jenkins-data

  • 创建公钥私钥,公钥配到git和远程的ssh主机,私钥配到jenkins凭证里

    使用1000用户在jenkins-data/ssh文件夹下创建公钥私钥

    ssh-keygen -t rsa -b 4096 -f ./id_rsa

    #=======其他=========

    查看容器里用户id

    docker exec -u 0 -it jenkins id jenkins

    提前把git的主机信息在宿主机里加到known_hosts里,并修改权限

    ssh-keyscan -p 22 xx.xx.xx.xx >> ./jenkins-data/ssh/known_hosts
    chmod 644 ./jenkins-data/ssh/known_hosts
    chown 1000:1000 ./jenkins-data/ssh/known_hosts

    生成的公钥加到authorized_keys里,免登录(放到git里的也是这个密钥)

    cat id_rsa.pub >> /home/chenph/.ssh/authorized_keys

  • docker-compose.yml 中配置,这里需要注意user配置为1000,上边的所有操作就是为了这个(宿主和容器,都是1000用户,这就避免容器重建的时候,重新生成密钥)

    复制代码
    jenkins:
      image: jenkins/jenkins:lts
      container_name: jenkins
      user: "1000:1000"
      expose:
        - '8080'
      volumes:
        - /var/run/docker.sock:/var/run/docker.sock
        - ./jenkins-data:/var/jenkins_home
        - ./jenkins-data/ssh:/var/jenkins_home/.ssh
      networks:
        - app-network
  • 可以进入到容器里,测试一下能否连git,直接显示"Hi there, Jenkins!...." 就是都ok了

    ssh -T git@xx.xx.xx.xx -p 22

  • 在jenkins里任务配置的git地址,如果是要用ssh模式,要以ssh开头

  • 搭配nginx同样很麻烦,还是直接配到根路径,给个二级域名吧

  • 配置hook的时候,如果联动的gitea,只能配http的git地址,这个我调了好久,可以增加以下日志记录器排查

    hudson.plugins.git.GitStatus - All
    com.cloudbees.jenkins.GitHubWebHook - All
    org.jenkinsci.plugins.github - All

相关推荐
吹什么轩5 分钟前
linux系统复习:僵尸进程与孤儿进程
linux·运维·php
老李IT笔记1 小时前
连不上不一定是网不好:新系统不认的服务端配置卡在哪一档
运维·服务器·网络
小此方1 小时前
Linux网络(二十八):从NAT转换到正反向代理:图解内网通信、NAPT端口映射
linux·运维·网络
刚入门的大一新生1 小时前
Linux-进程池
linux·运维·服务器
数据库小学妹2 小时前
数据库运维五级成熟度:监控、备份、高可用怎么串起来
运维·数据库·监控
AliCloudROS2 小时前
从 1 万到 20 万:OOS Loop 任务规模提升 20 倍的攻坚记录
运维·性能优化
千桐科技2 小时前
qModel算法模型平台功能解析:从源码到 Docker 镜像,部署能自动完成哪些工作?
运维·docker·容器·qmodel
刚入门的大一新生3 小时前
Linux-进程间通信1
linux·运维·服务器
天远Date Lab3 小时前
零信任架构实战:基于天远柠檬查维保构建自动化全国连锁二手车置换上架电子维保报告网关
运维·人工智能·架构·自动化
张宇Joaquin3 小时前
Linux系统下磁盘扇区512n、512e和4kn的区别
linux·运维·数据库