Docker环境下安装Jenkins

1.镜像拉取

环境要求:

  1. Docker
  2. JDK11

直接使用docker pull jenkins会报如下错误:

[root@VM-4-16-centos home]# docker pull jenkins
Using default tag: latest
Error response from daemon: manifest for jenkins:latest not found: manifest unknown: manifest unknown

进入Docker hub
https://hub.docker.com/_/jenkins
查看Jenkins镜像,可以看到介绍中的废弃声明:

该镜像已经被弃用了两年多,因为历史原因保留此镜像,但是已经两年多没有更新,将来也不会进行任何更新。
取而代之的是jenkins社区提供和维护的jenkins/jenkins:lts镜像。

Jenkins从2.357版本之后不再支持Java 8,具体内容可参见Jenkins官方博文:http://www.jenkins.io/blog/2022/06/28/require-java-11/

docker pull jenkins/jenkins:lts

拉取完成后使用docker images查看镜像.

2.运行容器

使用如下命令运行容器:

docker run -d --name myjenkins -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 jenkins/jenkins

各参数作用:

  1. -d:后台运行
  2. –name:指定容器名称
  3. -v jenkins_home:/var/jenkins_home:将容器/var/jenkins_home目录映射到宿主机jenkins_home目录下
  4. -p: 端口映射,前面的是宿主机的端口,后面的是容器的端口,8080是Jenkins使用的端口,50000端口我的理解是连接agent时需要使用改端口,具体是这样解释的:

You can run builds on the controller out of the box. The Jenkins project recommends that no executors be enabled on the controller.
In order to connect agents through an inbound TCP connection, map the port: -p 50000:50000. That port will be used when you connect agents
to the controller.

If you are only using SSH (outbound) build agents, this port is not required, as connections are established from the controller. If you
connect agents using web sockets (since Jenkins 2.217), the TCP agent port is not used either.

3.访问

访问IP:8080,可以看到以下界面:

进入目录后输入密码。注意这里是容器内的目录,不是宿主机的目录,可以使用如下命令进入容器内:

docker exec -it e0 /bin/sh

其中e0是我的容器ID前两位。
输入密码后就可以正常进入Jenkins了。

4.问题

  1. 容器启动后,页面访问不到:
    由于我使用的是云主机,需要到控制台开下8080端口
  2. Docker 宿主机目录位置
    这里由于对Docker不熟悉,还去根目录下找jenkins_home,使用docker info可以看到docker的默认工作目录是/var/lib/docker,因此实际上宿主机的目录是/var/lib/docker/volumes/jenkins_home/_data,也可以通过docker inspect命令来查看具体的挂载路径:
docker inspect e0 | grep Mounts -A 20
  1. master节点找不到
    启动Jenkins后,使用master节点准备测试下流水线,出现如下报错:‘Jenkins’ doesn’t have label ‘master’:
‘Jenkins’ doesn’t have label ‘master’

百度后在官网找到相应解释:内置节点在Jenkins 2.307和Jenkins 2.319.1中从“主节点”重命名为“内置节点”,参见https://www.jenkins.io/doc/book/managing/built-in-node-migration/,因此需将node(“master”)改为node(“built-in”)

5.参考

1.https://stackoverflow.com/questions/67769806/docker-error-response-from-daemon-manifest-for-jenkinslatest-not-found-manif
2.http://www.jenkins.io/blog/2022/06/28/require-java-11/
3.https://github.com/jenkinsci/docker/blob/master/README.md
4.https://github.com/jenkinsci/docker/blob/master/README.md#connecting-agents
5.https://www.jenkins.io/doc/book/managing/built-in-node-migration/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值