Docker安装Jenkins

Jenkins在项目中可以说是CI/DI必不可少的一个工具。关于Jenkins的安装,网上文章很多,但是错讹居多,有不少都没有经过验证。
本文结合网上文章、视频以及个人实操,希望可以作为一个满意的Docker安装Jenkins的文档。

一、版本选择

我们在安装容器时,很多时候都是采用的官方镜像,但是如果看网上的文章,在安装Jenkins时大多不是直接安装的官方推荐的。

1. 检索Jenkins的镜像

docker search jenkins

在这里插入图片描述
一般第一个就是官方镜像。
但是安装Jenkins时,大多不会安装这个版本,就连Jenkins官网都推荐安装的是其他版本,具体是什么呢?就是jenkinsci/blueocean。

docker search jenkinsci

在这里插入图片描述
通过上图OFFICIAL列的字段可以看出,我们检索的jenkinsci的容器,都不是官方版本的。

查看官网

官网地址:Docker安装Jenkins官网
官网推荐命令:

docker run \
  -u root \
  --rm \
  -d \
  -p 8080:8080 \
  -p 50000:50000 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkinsci/blueocean

我们看最后一行,官网使用的就是jenkinsci/blueocean版本。
最终,我们确定,我们使用的Jenkins版本是jenkinsci/blueocean。

二、安装

我们不采用官方的命令,我们采用最通用的命令。

docker run -u root --name jenkins-blueocean -d \
-p 8080:8080 -p 50000:50000 \
-v /usr/local/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart=always --privileged=true \
jenkinsci/blueocean

命令解读:

-u root:以root用户创建容器容器,否则容易出现权限问题
–name :指定容器运行后的名字
-d:后台运行容器
-p:端口映射,宿主机:容器
-v:端口映射
–restart=always:跟随Docker自动重启,可以说是必须的
–privileged=true:让当前用户拥有root权限。

需要说明的是,–privileged=true,虽然是拥有了 root 权限,但并不一定是 root 用户身份。
-uroot ,指定了 root 用户身份,但并不是真正拥有 root 权限。
总结:

-uroot:是给了 root 用户身份,但并没有真正的 root 权限
–privileged:真正让当前用户有了 root 权限

这部分参考:docker run 命令详解
所以,我们给出的命令不但有-u root,也有–privileged=true,这就是更合理的。

三、错误示范

一般创建容器时,很少指定-u root命令,大多是使用–privileged=true。这在创建其他容器时一般是没问题的,但是创建Jenkins是有问题的。

docker run --name jenkins -d \
> -p 8080:8080 -p 50000:50000 \
> --restart=always --privileged=true \
> -v /usr/local/jenkins_home:/var/jenkins_home \
> -v /var/run/docker.sock:/var/run/docker.sock \
> jenkinsci/blueocean

我们采用以上命令创建一个名为jenkins的容器,然后查看容器情况:

docker ps

在这里插入图片描述
我们看到STATUS为Restarting。
查看容器日志:

docker logs -f --tail 300 jenkins

在这里插入图片描述
如果我们搜索错误日志:

touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission

给出的解释大体都是一样的:

docker与jenkin默认目录(/var/jenkins_home)的权限问题

具体说就是:

需要修改下目录权限, 因为当映射本地数据卷时,此时的用户权限是root,即/usr/local/docker/jenkins/ 权限为root,但是挂载卷到容器内部,此时jenkins的权限为为1000。

解决方案:

chown -R 1000:1000 /usr/local/docker/jenkins/

这个问题就是在创建Jenkins容器是没有加-u root参数导致的,切记!

四、登陆

浏览器上输入:

http://192.168.222.100:8080/

按道理说是访问http://localhost:8080就可以访问,但是我这里失败了,只好通过访问虚拟机路径访问。
以上地址是我们的虚拟机地址。
在这里插入图片描述
创建Jenkins后会自动创建admin用户和对应的密码,密码所在的位置上图已经给出,我们访问该文件即可得到密码:

cat /var/jenkins_home/secrets/initialAdminPassword

得到的密码是:

bc3427450e574797a48fec1866229a9b

也可以访问Jenkins运行日志查看该密码:

docker logs jenkins

上面的jenkins指的是创建的Jenkins的容器名称。
在这里插入图片描述
因为Jenkins是用Java编写的,上图就是启动一个java项目的日志。
我们通过上图可以看到密码,以及日志的提示中说,可以访问下面目录得到密码:

/var/jenkins_home/secrets/initialAdminPassword

这和页面上给的提示是一致的。
我们输入密码,点击继续即可登陆成功。
在这里插入图片描述
这真的是新手入门!!!
既然是新手入门,那我们就安装推荐的插件即可,这个其实就类似于安装软件时候的默认安装与自定义安装。

在这里插入图片描述
邮箱不可少。
在这里插入图片描述
保存并完成。
在这里插入图片描述
上图就是采用我们刚才创建的用户登陆的界面。
至此,我们通过Docker安装Jenkins已经完成。
唯一的缺憾就是,我们创建完容器后竟然不能使用localhost来访问。这个问题以后再解决。
至于后续的Jenkins操作,我们下一篇文章来介绍,这个就是更深一层的知识了。后续就是项目部署,当然必然少不了流水线部署的。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Docker安装Jenkins,可以按照以下步骤进行操作: 1. 首先,创建一个自定义的网络,可以使用以下命令创建一个名为woniu_network的网络,并指定IP区间为172.0.0.0/16: ``` docker network create --driver bridge --subnet 172.0.0.0/16 woniu_network ``` 2. 接下来,创建一个用于存放Jenkins数据和配置的目录。可以使用以下命令创建一个名为jenkins的目录,并设置权限: ``` mkdir -p /home/docker/jenkins && chown -R 1000 /home/docker/jenkins ``` 3. 然后,安装Jenkins。可以使用以下命令运行Jenkins容器: ``` docker run -d -p 8080:8080 -p 50000:50000 \ --name jenkins \ --network woniu_network \ --ip 172.0.0.20 \ --restart always \ --privileged=true \ -v /home/docker/jenkins:/var/jenkins_home \ jenkins ``` 4. 如果需要运行中文版的Jenkins,可以使用以下命令运行Jenkins容器: ``` docker run -d -p 8080:8080 -p 50000:50000 \ --name jenkins \ --network woniu_network \ --ip 172.0.0.20 \ --restart always \ --privileged=true \ -v /home/docker/jenkins:/var/jenkins_home \ jenkinsci/blueocean ``` 5. 现在,可以通过访问http://localhost:8080来访问Jenkins。 如果需要在Jenkins节点内执行Docker命令,可以使用以下命令下载并运行Docker映像docker:dind: ``` docker run -d --restart always \ --name jenkins-docker \ --privileged \ --network jenkins \ --network-alias docker \ --env DOCKER_TLS_CERTDIR=/certs \ --volume jenkins-docker-certs:/certs/client \ --volume jenkins-data:/var/jenkins_home \ --publish 2376:2376 \ docker:dind ``` 如果需要清理Jenkins容器,可以使用以下命令: ``` docker rm -f jenkins-blueocean jenkins-docker docker volume rm jenkins-data jenkins-docker-certs ``` 希望以上信息对您有所帮助。 #### 引用[.reference_title] - *1* [Docker 安装 Jenkins](https://blog.csdn.net/u011374856/article/details/109022921)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* *3* [docker安装jenkins](https://blog.csdn.net/networken/article/details/98112690)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北冥牧之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值