一、基础环境
1、系统:Ubuntu 22.04.1 LTS
二、基础软件安装(如已安装则跳过)
# 更新源
apt update
# 安装docker
apt install docker.io -y
# 安装docker-compose
apt install docker-compose
# 搜索jenkins镜像
docker search jenkins
# 从搜索结果选择jenkins/jenkins 这个镜像
docker pull jenkins/jenkins
三、构建jenkins的docker-compose.yml
1、先创建一个jenkins目录
# 创建一个jenkins文件夹
mkdir jenkins
# 权限
chmod 777 /jenkins
2、docker-compose.yml
version: "3"
services:
jenkins:
user: root
restart: always
image: jenkins/jenkins
container_name: jenkins
network_mode: host
environment:
TZ: Asia/Shanghai
volumes:
- /jenkins:/jenkins
- /var/run/docker.sock:/var/run/docker.sock
- /etc/localtime:/etc/localtime
参数说明:
1)/jenkins:/jenkins: 将容器内的jenkins路径挂载到宿主机上,这样就可以让容器随时销毁创建而 不影响服务与数据内容
2)network_mode: host,这样的话 jenkins 内部就能够直接访问到宿主机的本地端口,这个很关键,因为后面需要从 jenkins 内部来通过本地端口访问宿主机的 Docker 实例 API
3)挂载进去之后的 /var/run/docker.sock 文件用户是 root,而 Jenkins 容器内部的执行用户其实是 jenkins,所以需要指定user :root,用root用户进去才能正常执行docker相关操作
四、启动服务
1、启动服务
cd /jenkins
# 启动服务
docker-compose up -d
2、修改配置
# 进入jenkins容器
docker exec -it -u root jenkins bash
# 更新原
apt update
# 安装 vim
apt install vim -y
# 查找原所在文件
find / -name *.UpdateCenter.xml
#查找到结果:/var/jenkins_home/hudson.model.UpdateCenter.xml
vim /var/jenkins_home/hudson.model.UpdateCenter.xml
官网的源太慢,将url标签里面的内容改为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
3、重启docker
docker restart jenkins
五、Jenkins客户端
1、在浏览器中输入:http://serverIp:port/ 访问jenkins,serverIp为docker宿主机的ip,port即为宿主机映射的端口(8080为默认端口)
2、获取初始密码
# 获取初始密码执行命令
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
3、安装推荐的插件.
4、新建管理员用户
5、进入Jenkins主界面
六、Jenkins客户端
由于Jenkins的镜像版本太低,因此在Jenkins客户端上下载插件失败。需要升级Jenkins版本:
首页-->系统管理-->自动升级按钮-->jenkins.war安装完成后点击重启
升级之后插件可以正常下载了。
七、解决剩余交换空间为0问题
进入Jenkins节点管理, 显示剩余交换空间为0
解决:
1、登陆服务器,查看swap,如下所示,没有配置swap
free|grep -i Swap
Swap: 0 0 0
2、配置swap
dd if=/dev/zero of=swapfile bs=1M count=1K
mkswap swapfile
sudo chown root:root swapfile
sudo chmod 600 swapfile
sudo swapon swapfile
重新查看,已有数据了:
free|grep -i Swap
Swap: 1048572 0 1048572
3、重启Jenkins服务
docker restart jenkins
重新查看Jenkins客户端,已显示正常