docker 安装jenkins

一、Docker安装(略,可根据自己的系统自行百度)

二、Jenkins安装

1、搜索jenkins的镜像,使用命令:docker search jenkins,显示内容如下:

docker 安装jenkins

 

可以看到,现在列出的是docker hub上已有的jenkins镜像文件

2、选择一个搜索到的镜像文件进行下载,我使用的是jenkins/jenkins,使用命令:docker pull jenkins/jenkins

docker 安装jenkins

 

运行命令后,默认下载latest版本的jenkins镜像文件,也可以指定版本(因为测试环境中已有jenkins/jenkins镜像,因此上面截图中示例使用的是jenkins镜像)。下载完成后,使用docker images|grep jenkins命令查看下载下来的镜像docker 安装jenkins

 

截图中最后一个标示的就是刚刚下载的文件

3、镜像文件下载后就可以创建并运行容器了,使用命令:

docker run -u 0 -it --name jenkinsnew  --restart=always  -p 50000:8080 -v /opt/apache-maven-3.6.1/bin/mvn:/opt/apache-maven -v /root/Jenkins/:/root/Jenkins  jenkins/jenkins /bin/bash

命令解释:

  • -u 0 :如果未使用该参数时,默认进入jenkins容器使用的是非root权限,而是使用的jenkins用户,因此导致了很多常用命令无法使用也无法安装且无法切换到root权限。而加了该参数后默认使用root用户进入,缺少的命令可以随时进行安装,安装命令使用:

        apt-get update

        apt-get install xx

  • -i -t :-i 的作用是打开容器的标准输入(STDIN),-t 的作用是为容器建立一个命令行终端,这两个命令为我们创建了交互shell,是创建交互型容器的基本设置。与之相对应的是 -d ,即容器创建后不进入交互式而是后台运行,只返回一个容器ID,当前仍会处于宿主机环境中
  • --name jenkinsnew:--name是一个可选参数,作用是重命名容器。如果不加的话容器创建后使用的是和镜像文件相同的名称
  • --restart=always:容器在运行的过程中,不可避免的会遇到各种问题或修改参数等情况需要重启docker服务,这个命令的作用是当容器退出后不管返回码是什么,docker都会重启容器。好处是当宿主机运行多台容器时,如果需要重启docker服务则不需要再次手动重启每台容器。如果在容器启动时未加改命令,可以在后期使用 docker update --restart=always <CONTAINER ID> 去更新
  • -p 50000:8080:作用是指定主机上的端口映射到容器内部指定的开放端口,即将主机上的50000端口映射到了容器的8080端口上,使用命令:docker port <CONTAINER ID> port可以查看容器的端口的映射情况,例如查看运行的命令中使用的8080端口:
  • docker 安装jenkins

 

    -p 的用法还有很多情况,感兴趣的同学可以继续深入的学习下。

  • -v /opt/apache-maven-3.6.1/bin/mvn:/opt/apache-maven -v /root/Jenkins/:/root/Jenkins:-v的作用是创建数据卷并挂载到容器中,从而达到将数据卷供一个或多个容器使用的目的。需要注意的是挂载数据卷操作需要使用绝对路径,而不能使用相对路径。上述命令中的意思为:将容器的/opt/apache-maven目录映射到了主机中的/opt/apache-maven-3.6.1/bin/mvn中,通过挂载主机目录到容器的数据卷,主机对目录内的改变会同步到容器中,反之亦然。可以使用命令docker inspect <CONTAINER ID>来查看容器的详细信息,其中"Mounts"即数据卷的挂载情况
  • docker 安装jenkins
  • 注:我在命令中添加数据卷挂载的原意是不想在jenkins的容器中重复安装maven,因为宿主机中已经安装有maven,但实际构建时却因为maven找不到路径而报错,解决办法暂未找到。
  • /bin/bash:告诉docker要在容器中执行的命令为/bin/bash

 

三、Jenkins配置

经过上面的步骤后,Jenkins已经搭建完成,使用主机ip+映射出的端口号即可访问,如:http://192.168.10.118:50000。首次进入时会要求进行解锁,按要求进行即可,具体步骤可参考下面的文章:https://blog.****.net/hc_ttxs/article/details/79384535