Centos7 docker部署jenkins及报错问题解决

Jenkins部署:

//下载镜像
docker pull jenkins/jenkins
//开放指定的防火墙端口
firewall-cmd --zone=public --add-port=8000/tcp --permanent
//创建本地挂载目录
mkdir -p /home/docker/jenkins
//需要修改下目录权限, 因为当映射本地数据卷时,/home/docker/jenkins目录的拥有者为root用户,而容器中jenkins user的uid为1000
执行如下命令即可:
chown -R  1000:1000 /home/docker/jenkins

//运行启动Jenkins

docker run -d -p 8000:8080 -v /home/docker/jenkins:/var/jenkins_home --name jenkins --restart=always jenkins/jenkins

示例:docker run --privileged -id -p 9999:8080 --name=jenkins05 myjenkins:3.0 /usr/sbin/init

docker run -d -p 8000:8080 -p 50000:50000 -v /home/jenkins:/var/jenkins_home --name jenkins --restart always --privileged=true  -u root jenkins

查看密码:docker exec jenkins tail /var/jenkins_home/secrets/initialAdminPassword

-p : 映射端口,宿主机端口:容器端口

-v : 挂载,宿主机目录:容器目录

--name : 自定义容器名

-u : 权限用户名

--privileged : 使用该参数,container内的root拥有真正的root权限,否则,container(容器)内的root只是外部的一个普通用户权限,privileged启动的容器可以看到很多host上的设备,并且可以执行mount,甚至允许你在docker容器内启动docker容器。

/usr/sbin/init  >>>后面加 /usr/sbin/init表示给容器授权root权限,使容器能够使用root权限下的命令

给运行中的容器增加root权限:

首先你的container得正在运行。

可通过sudo docker container ls查看容器的CONTAINER ID

最后执行命令(其中848669a8722b为上面查到的CONTAINER ID)

sudo docker exec -ti -u root 848669a8722b bash

查看容器日志

docker logs -f jenkins

查看容器运行

docker ps

之后浏览器输入  http://你的ip地址:8000

进入之后需要输入密码,在命令行使用如下命令获取密码

cat /home/jenkins/secrets/initialAdminPassword        查看密码

之后会进入jenkins安装插件页面,

这里选择安装推荐插件就可以了;

接下来就是进入jenkins首页,这里使用前需要配置一些基础的maven和jdk;

 

点击进入配置页面:

解释一下我这里为什么是/var/jenkins_home/

因为我首先jenkins是安装在docker里的,这时候使用的就是docker里的路径,

我们上面运行jenkins的时候,看我标红的地方;

这里我的jdk是复制了一份放在/home/jenkins/下面的,所以这里路径就可以直接这么写了;

注意:这里是JAVA_HOME,所以不要加bin目录;

接下来配置maven,跟jdk一样;

至此,基本配置都已经好了。

接下来创建你新项目吧;

对了,默认的推荐插件是没有maven项目的,所以你可以在插件市场里搜索一下maven;

 然后去可选插件里搜索:

 右上角的搜索框输入:Maven Integration plugin

找到之后直接安装,然后重启jenkins就可以了;

重启jenkins可以直接在浏览器地址栏操作:

http://你的ip地址:8000/restart

这样就OK了;

 

报错解决办法:
docker 运行后, 执行docker logs -f myjenkins时报错:

touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

需要修改下目录权限, 因为当映射本地数据卷时,/home/docker/jenkins目录的拥有者为root用户,而容器中jenkins user的uid为1000
执行如下命令即可:

chown -R 1000:1000 /home/docker/jenkins


转载:
原文地址:https://www.cnblogs.com/yangzp/p/13588903.html