目录

1.下载安装包

2.修改配置

3.登陆Jenkins

4.安装git相关插件(用于自动化部署)

5.使用docker安装jenkins

6.docker安装jenkins常见问题:


1.下载安装包

官网红帽稳定版:Redhat Jenkins Packageshttps://pkg.jenkins.io/redhat-stable/

[root@dd /]# sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate
--2021-12-02 16:33:00--  https://pkg.jenkins.io/redhat-stable/jenkins.repo
正在解析主机 pkg.jenkins.io (pkg.jenkins.io)... 151.101.66.133, 151.101.2.133, 151.101.130.133, ...
正在连接 pkg.jenkins.io (pkg.jenkins.io)|151.101.66.133|:443... 已连接。
警告: 无法验证 pkg.jenkins.io 的由 “/C=US/O=Let's Encrypt/CN=R3” 颁发的证书:
  颁发的证书已经过期。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:85
正在保存至: “/etc/yum.repos.d/jenkins.repo”

100%[==========================================================================>] 85          --.-K/s 用时 0s      

2021-12-02 16:33:01 (3.56 MB/s) - 已保存 “/etc/yum.repos.d/jenkins.repo” [85/85])

执行

sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

安装依赖

[root@dd /]# yum install epel-release # repository that provides 'daemonize'
#日志如下:


Running transaction
  正在安装    : epel-release-7-11.noarch                                                                        1/1 
  验证中      : epel-release-7-11.noarch                                                                        1/1 

已安装:
  epel-release.noarch 0:7-11                                                                                        

完毕!

安装Jenkins

[root@dd ~]# yum install jenkins

#找到Jenkins的war包代表安装成功了

[root@dd ~]# ll /usr/lib/jenkins/
-rw-r--r--. 1 root root 72247484 12月  2 01:18 jenkins.war

2.修改配置

修改端口号

[root@bd ~]# vim /etc/sysconfig/jenkins 


#修改Jenkins端口
JENKINS_PORT="xxxx"


[root@bd ~]# service jenkins start
Starting jenkins (via systemctl):  [  确定  ]

3.登陆Jenkins

/var/lib/jenkins/secrets/initialAdminPassword 找到密码

 耐心等待安装完成

4.安装git相关插件(用于自动化部署)

配置好账号登陆后,进入控制台,选择Manage Jenkins -> Manage Plugins

安装gitlab插件和gitlab hook插件

5.使用docker安装jenkins

Jenkins官方镜像库,

Docker Hubhttps://hub.docker.com/r/jenkins/jenkins/tags拉取镜像,我选择的是jenkins:2.348-centos7-jdk8这个版本的images

[root@s71 ~]# docker pull jenkins/jenkins:2.348-centos7-jdk8
2.348-centos7-jdk8: Pulling from jenkins/jenkins
2d473b07cdd5: Pull complete 
......
b3f6e80ba82e: Pull complete 
70252facfd37: Pull complete 
1b3c7a65a194: Pull complete 
Digest: sha256:47886e079598823f08cacbfded8dac49ea84a6d3f3bfa5c3306e7edfc5ca8497
Status: Downloaded newer image for jenkins/jenkins:2.348-centos7-jdk8

创建宿主机对应的挂载目录

[root@s71 ~]# mkdir -p /usr/local/jenkins
# 添加权限
[root@s71 ~]# chmod 777 -R /usr/local/jenkins

几个注意事项,jenkins镜像自带了jdk环境,所以不需要配置jdk了,jenkins需要宿主机maven环境,我这里是/usr/local/maven,同时映射docker.sock给容器

启动容器

[root@s71 docker]# docker run -d -p 8099:8080 --log-opt max-size=10m --log-opt max-file=3 -p 50000:50000 --name jenkins --privileged=true -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /usr/lib64/libltdl.so.7:/usr/lib64/libltdl.so.7 -v /usr/local/jenkins:/var/jenkins_home -v ~/.ssh:/root/.ssh -v /usr/local/maven:/usr/local/maven jenkins/jenkins:2.348-centos7-jdk8

# 参数解释
--privileged=true #让容器有root权限,方便进入容器操作
-p 8099:8080 #jenkins的web访问端口8099
-v /usr/local/jenkins:/var/jenkins_home #容器/var/jenkins_home路径映射到宿主机/usr/local/jenkins
-v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock #宿主机docker环境给容器,因为jenkins自动打包生成docker镜像需要依赖环境
-v /usr/lib64/libltdl.so.7:/usr/lib64/libltdl.so.7  #有时jenkins打包会报找不到这个文件,映射进去
-v /usr/local/maven:/usr/local/maven #映射宿主机maven环境给容器

查看状态

[root@s71 docker]# docker ps
CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS              PORTS                                              NAMES
4c102b9611c5        jenkins/jenkins:2.348-centos7-jdk8   "/sbin/tini -- /usr/…"   31 seconds ago      Up 30 seconds       0.0.0.0:50000->50000/tcp, 0.0.0.0:8001->8080/tcp   jenkins

查看初始化密码,直接查看宿主机挂载目录下对应文件就可以了,不需要进入docker容器了

[root@s71 docker]# cat /home/docker/jenkins/secrets/initialAdminPassword 

其他操作同linux直接安装一样

6.docker安装jenkins常见问题:

jenkins打包出现:Got permission denied while trying to connect to the Docker daemon socket at unix

原因是生成的jenkins容器默认用户jenkins没有root权限,调用不了docker指令,可以使用指令

docker exec -it -u root jenkins /bin/bash 进入到容器内给jenkins赋权

linux授权方法:

1、添加用户,首先用adduser命令添加一个普通用户,命令如下:
#adduser tommy      //添加一个名为tommy的用户
#passwd tommy       //修改密码


Changing password for user tommy.
New UNIX password:                //在这里输入新密码
Retype new UNIX password:         //再次输入新密码
passwd: all authentication tokens updated successfully.

2、赋予root权限
方法一: 修改 /etc/sudoers 文件,找到%wheel一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL
然后修改用户,使其属于root组(wheel),命令如下:
#usermod -g root tommy
修改完毕,现在可以用tommy帐号登录,然后用命令 sudo su - ,即可获得root权限进行操作。

方法二: 修改 /etc/sudoers 文件,找到root一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
tommy   ALL=(ALL)     ALL
修改完毕,现在可以用tommy帐号登录,然后用命令 sudo su - ,即可获得root权限进行操作。

方法三: 修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:
tommy:x:500:500:tommy:/home/tommy:/bin/bash
修改后如下
tommy:x:0:500:tommy:/home/tommy:/bin/bash
保存,用tommy账户登录后,直接获取的就是root帐号的权限。

jenkins打包出现:error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file 

启动时没加挂载命令 -v /usr/lib64/libltdl.so.7:/usr/lib64/libltdl.so.7 时会出现,确认宿主机是否有这个文件(有的没有安装),同时宿主机增加权限 chmod 777 /usr/lib64/libltdl.so.7

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐