CentOS 以 Docker 方式部署 Jenkins

Posted by jacobc on Wednesday, November 2, 2022

CentOS 以 Docker 方式部署 Jenkins

一、Docker 安装 Jenkins

1.1 下载 Jenkins 镜像

Jenkins 有两个产品线,一个是稳定版(Stable[LTS]),一个是新功能版(Regular[Weekly]),这里使用稳定版,当然,也可以使用新功能版。

# 稳定版
docker pull jenkins/jenkins:lts
# 或者
docker pull jenkins/jenkins:lts-jdk11

# 新功能版
docker pull jenkins/jenkins
# 或者
docker pull jenkins/jenkins:jdk11

1.2 安装 Jenkins

下载完成后启动 Jenkins 镜像,这里提供两种方式,一种直接使用 docker 命令启动,另一种使用 docker-compose 启动

1.2.1 使用 docker 命令启动 Jenkins

docker run -d --name jenkins -p 8080:8080 -v /data/jenkins:/var/jenkins_home jenkins/jenkins:lts
备注:
-d  在后台运行
--name 容器名字
-p 端口映射前面的端口为宿主机端口,后面的端口为容器端口
-v 数据卷挂载映射 /data/jenkins:宿主主机目录,后面的为容器目录
enkins/jenkins:lts Jenkins镜像名称

1.2.2 使用 docker-compose 启动 Jenkins

docker-compose.yaml 文件内容如下:

version: '3'
services:
  jenkins:
    container_name: jenkins
    image: jenkins/jenkins:lts
    ports:
      - 8080:8080
    volumes:
      - /data/jenkins:/var/jenkins_home

在命令行输入如下命令:

docker-compose up -d -f docker-compose.yaml
备注:
-d  在后台运行
-f  启动使用的文件名称,如果名称 docker-compose.yaml,可不用此参数,因为默认值即为 

1.2.3 可能遇见的问题

可能会遇见启动不起来的情况,即 jenkins 容器状态一直未 Exited,通过 docker logs jenkins 查看日志,如下:

$ docker logs jenkins
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Running from: /usr/share/jenkins/jenkins/war

大概意思是没有权限,/data/jenkins 目录所属是 root 用户,可以给该目录添加 777 权限:

chmod 777 /data/jenkins

再启动,应该就可以了

二、Jenkins 初始化配置

在浏览器输入机器的 ip:8080 进入 Jenkins 网页端

http://225.240.67.40:8080

2.1解锁 Jenkins

第一次进入会展示这个界面:

按照提示,找到 Docker 映射挂着的目录 /data/jenkins/secrets/initialAdminPassword,查看内容,复制,并粘贴到这里。

2.2 安装插件

之后是安装插件,如下:

新手建议选择前面这个,之后会跳转到如下页面,安装过程可能会有半个小时。

2.3 管理员用户创建

创建的第一个用户,具有最大权限。

填完这个表单,保存并完成,就安装成功了。

三、安装 gcc 环境

后面使用的过程中,可能会遇到一个问题,就是 jenkins 环境里没有 gcc,所以需要安装一下,直接进入镜像中安装不了,报没有权限,所以有两种方式:

一种是启动容器时,给 privileged 权限,或者说模式,这样会是容器拥有真正的 root 权限,但是容器就不安全了。

另一种是以原有镜像作为基础镜像,通过 Dockerfile 安装 gcc 及相关工具,打包新的镜像。

这里主要说镜像方案,Dockerfile 文件内容如下:

FROM jenkins/jenkins:lts
USER root
RUN cp /etc/apt/sources.list /etc/apt/sources.list.bak && sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update && apt-get install -y build-essential
USER jenkins

写好之后,使用如下命令打包镜像:

docker build -t jenkins-gcc:lts .

当然,起什么镜像名称和版本号可以自己觉得,这里只是举个例子。

最后,只需要把上面用到的 docker-compose.yaml 文件进行简单的修改即可:

version: '3'
services:
  jenkins:
    container_name: jenkins
-   image: jenkins/jenkins:lts
+   image: jenkins-gcc:lts
    ports:
      - 8080:8080
    volumes:
      - /data/jenkins:/var/jenkins_home

最后的最后,使用 docker-compose up -d -f docker-compose.yaml 启动 jenkins。

Finish

「如果这篇文章对你有用,请随意打赏」

Jacobc' Blog

如果这篇文章对你有用,请随意打赏

使用微信扫描二维码完成支付