jenkins 安装使用
windows 环境下安装
安装容器并运行
docker run -d --restart=always ^
--name jenkins_01 ^
-p 8080:8080 -p 50000:50000 ^
-v D:/dockervolumes/jenkins_home:/var/jenkins_home ^
-v /var/run/docker.sock:/var/run/docker.sock ^
-v /usr/bin/docker:/usr/bin/docker ^
-v /usr/local/bin/docker-compose:/usr/local/bin/docker-compose ^
jenkins/jenkins
Docker Desktop on Windows 安装时是自带 docker-compose 的
为了确保构建脚本是否能使用 docker 和 docker-compose 相关命令,进入 jenkins_01 容器查看是有docker 和 docker-compose
$ docker -v
Docker version 20.10.10, build b485636
$ docker-compose -v
/bin/sh: 2: docker-compose: Permission denied
发现 docker-compose 没有使用权限!!!
linux 环境下修改权限方式为 chmod 777 -R /usr/bin/docker-compose:/usr/bin/docker-compose
windows 环境下怎么修改权限,懵逼了!
后来发现 docker-compose: Permission denied 不是权限问题,进入挂载目录发现 docker-compose 根本就没有挂载成功!linux环境下 docker-compose 的路径是 /usr/local/bin/docker-compose,/usr/bin/docker 能挂载成功,docker-compose 却挂载不成功!!!
还不懂怎么进不了 Docker 虚拟机文件目录,网上查找资料发现 Docker Desktop on Windows 有设置共享目录,但是安装最新版的居然没有,
有教程说在设置里切换 switch windows\linux containter 也没有能设置共享目录呀!
docker 命令可以通过挂载获得,docker-compose 可以通过通过 Dockerfile 下载 docker-compose 创建自定义 jenkins 镜像获得。
Dockerfile 文件 Dockerfile-Myjenkins 如下
FROM jenkins/jenkins
USER root
RUN curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose \
&& chmod +x /usr/local/bin/docker-compose
生成 myjenkins 镜像
docker build -t myjenkins -f Dockerfile-Myjenkins .
使用 myjenkins 镜像运行 jenkins_01 容器
docker run -d --restart=always ^
--name jenkins_01 ^
-p 8080:8080 -p 50000:50000 ^
-v D:/dockervolumes/jenkins_home:/var/jenkins_home ^
-v /var/run/docker.sock:/var/run/docker.sock ^
-v /usr/bin/docker:/usr/bin/docker ^
myjenkins
进入 jenkins_01 容器查看,终于有了是 docker 和 docker-compose
$ docker -v
Docker version 20.10.10, build b485636
$ docker-compose -v
docker-compose version 1.29.2, build 5becea4c
访问 8080 端口获取密钥登录
docker logs jenkins_01
或
D:\dockervolumes\jenkins_home\secrets\initialAdminPassword
安装插件(推荐安装)
安装插件出现一个错误: No such plugin: cloudbees-folder
安装插件 cloudbees-folder 失败,是因为下载的 Jenkins.war 里没有 cloudbees-folde r插件
需要去 https://updates.jenkins-ci.org/download/plugins/cloudbees-folder/ 下载一个插件
放在 D:\dockervolumes\jenkins_home\war\META-INF
镜像源更换为国内下载会快点
D:\dockervolumes\jenkins_home\hudson.model.UpdateCenter.xml
https://updates.jenkins.io/update-center.json
改为
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
创建管理员
linux 环境下安装
创建一个 jenkins 的挂载工作目录
创建容器并运行
docker run \
--restart=always \
--name jenkins_01 \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
-v /usr/local/bin/docker-compose:/usr/local/bin/docker-compose \
jenkins/jenkins
在宿主机中 jenkins_home
挂载卷,用于备份 Jenkins 中的数据。
因为会使用到容器提供环境,以及使用 Docker 打包 .NET Core 程序为 Docker 镜像,所以需要在 Jenkins 容器中映射 Docker 的 .sock
文件,以便在容器中,还能使用 Docker 命令。
如果不挂载 usr/bin/docker 可能报错:docker: command not found
挂载 docker-compose(挂载前确保安装了正确版本的docker-compose),确保可以在 jenkins 构建脚本中使用 docker-compose 命令,如果不挂载 usr/bin/docker 可能报错: docker-compose: command not found
进入 jenkins_01 容器查看 docker、docker-compose 是否挂载成功
docker exec -it jenkins_01 /bin/bash
jenkins@2a4964a08904:/$ docker -v
Docker version 20.10.12, build e91ed57
jenkins@2a4964a08904:/$ docker-compose -v
docker-compose version 1.29.2, build 5becea4c
修改权限
修改权限,否则会报错:jenkins Got permission denied while trying to connect to the Docker daemon socket at unix,在宿主机执行如下命令
# 如果报权限不足,可以看需要修改以下文件权限(777 可读可写可操作,-R 表示包含所有子目录)
chmod 777 /var/run/docker.sock:/var/run/docker.sock
chmod 777 -R /usr/bin/docker:/usr/bin/docker
chmod 777 -R /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
访问 8080 端口获取密钥登录
输入管理员密码,密码使用 docker logs {容器ID}
查看日志获取 Jenkins 登录密码
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
19b66ff267464b76aaaaaaaaaaaaaaaa
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
安装插件(推荐安装)
如过组件安装失败可修改配置 jenkins_home/jenkins_home]# cat hudson.model.UpdateCenter.xml
https://updates.jenkins.io/update-center.json
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
创建管理员
使用 jenkins 官方安装方法
jenkins 官方使用了 docker:dind 实现一种 docker in docker 的方式,实现了 sock binding。
dind 常见玩法不光有 sock binding,还有特权模式运行,以及走tcp和daemon通信两种模式。一般来说不建议简单的把宿主的sock映射到容器内部,有安全风险,不过这三种方案现阶段都有瑕疵,权衡下使用就好。适用场景:追求高度隔离,宿主环境也是容器的场景,包括并不仅限于CI/CD。
尝试使用了 docker:dind 安装 jenkins ,发现容器嵌套太深了,了解的还不够,发现网络连接和挂载上很复杂。。
参考:https://www.jenkins.io/doc/book/installing/docker/
任务配置
-
创建任务名 XXX 选任务类型,以Freestyle project 举例
-
源码管理配置
仓库地址 Repository URL
https://github.com/weichangk/MiniShop.git
添加凭据 Credentials
Kind:选择SSH Username with private key
Username:随便填写
Private Key:选择Enter directly
Key:系统生成的git id_rsa中的Key
凭据保存后返回源码管理 Credentials:选择刚才填写的 UserName -
指定分支
*/master(看具体而定)
-
添加构建步骤
本案例选择shell,输入 shell 脚本
-
点击保存,重新构建Job。
-
如果使用 docker-compose 结合 .env 环境变量配置进行部署,在生产环境服务器中只要将 prod.env 环境变量配置文件放置 jenkins 项目构建任务工作空间目录如:/var/lib/docker/volumes/jenkins_home/_data/workspace/minishopids,
在启动容器时指定 prod.env 文件如:docker-compose -f docker-compose.yml -p minishopids --env-file prod.env up --detach 即可切换生产环境配置。
本文来自博客园,作者:weichangk,转载请注明原文链接:https://www.cnblogs.com/weichangk/p/16069696.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix