Linux环境下docker部署jenkins如何操作?

背景:习惯了tomcat或者java -jar命令模式来部署jenkins,今天特来展示一下通过docker镜像部署,秀一下新技能<对于大佬而言并不新鲜>,由于前份工作环境是采用docker容器技术部署服务,多少还有些印象,说白了就是用过但不是很熟练<当时使用第三方的docker可视化平台>。很长时间不用,就显得无比生疏。

 

1、准备测试环境,创建jenkins工作目录并赋权(实际操作root用户权限,未建立目录并授权一样可行,亲测有效!!!);

[root@localhost /]# mkdir -p /var/jenkins_home

[root@localhost /]# chmod 777 /var/jenkins_home

tips:实际在docker启动jenkins时,会时exited状态,即未启动成功。

2、然后就是拉取镜像,不过可以在拉取之前先查找一番:docker search jenkins

否则命令则是拉取最新的镜像包(未必最新,访问时要求更新!!!):docker pull jenkins # dicker版jenkins最新包:docker pull jenkins/jenkins:lts

3、download完成之后,就是启动:docker run -d --name myjenkins -p 8111:8080 -p 50000:50000 -v :/var/jenkins_home jenkins

解析参数:

-d 后台运行

--name myjenkins: 给容器取个别名,与--name="myjenkins" 是一样的意思

-p或-P:指定映射端口,后一个是服务的端口

jenkins_path:前一个是linux本地路径,后一个是容器的路径。 最后面的是镜像名

4、检查启动是否正常,查看日志,镜像名或是ID:docker logs myjenkins

5、很显然,上面的操作命令结果是失败的,docker ps -a | grep jenkins 查看容器状态时exited,所以查看日志得知是权限问题,不能访问:/var/jenkins_node

tips:百度结果有一种特别多就是在创建目录赋权,因为一开始是root,结果是chown 1000:1000 /var/jenkins_home ,然而试验失败了。

另外一种加参数解决方案(亲测有效!!!):-u 0 # root的标识是0,可以通过查看/etc/password知道用户的标识ID

[root@localhost /]# docker run -u 0 -d --name myjenkins -p 8111:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home jenkins

# 所以说 /data/jenkins_home 本来不存在的目录会自动创建.,这句话本人都不理解?启动容器时会将在宿主机的目录及文件在容器内部创建并使用

6、接下来启动成功就在pc端输入访问地址,结果发现:不行!说话:映射端口需要服务器开放:上阿里云映射对外端口,如果是局域网则不需要。

7、如果启动成功了:docker logs myjenkins可以看到最后的密码行:Linux环境下docker部署jenkins如何操作?_第1张图片

 

8、再有就是服务器需要检查端口是否可访问:telnet ip port,是否正常可用。

9、进入容器命令:docker exec -t myjenkins/可以是容器id /bin/bash

10、docker镜像部署jenkins及访问至此已完成。

建议:宿主机jenkins的工作目录与容器目录映射保持一致,在构建job时避免分不清是在容器内部执行shell还是外部执行shell而报错。

问题一:docker run -u 0 -d --name myjenkins -p 8111:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins:lts

docker logs myjenkins出现如下错误信息:

Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

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

 

查看jenkins的权限拥有者,docker run -ti --rm --entrypoint="/bin/bash" jenkins -c "whoami && id"

[root@localhost /]# docker run -ti --rm --entrypoint="/bin/bash" jenkins -c "ls -la /var/jenkins_home"

 

当前目录的拥有者赋值给uid 1000,再启动"jenkins"容器

[root@localhost var]# chown -R 1000:1000 jenkins_home

 

 

 

你可能感兴趣的:(测试环境部署,Linux运维管理)