定制Jenkins镜像彻底解决,容器化部署中的各种权限问题

背景:以docker容器的方式安装Jenkins服务器,运行结束可直接删除容器,不留垃圾,版本升级简单高效,是最快捷的部署方式(参照:docker容器化安装Jenkins)。遗憾的是,Jenkins官方镜像的内置用户为普通权限的jenkins账户,这在容器挂载本地目录、容器内安装应用、git配置gitlab代码库链接,以及使用Jenkins自动打包docker镜像时均会遇到权限问题。

分析:Jenkins容器中服务的权限太低,需要提升root权限。查找了网上各种资料,均提出通过修改/etc/sysconfig /jenkins文件的方式更改启动用户,经过实践后很遗憾的发现这种方式只对rpm包安装的Jenkins服务有效,Jenkins容器并没有相关配置。

解决:通过分析官方镜像dockerfile文件发现,启动用户是在镜像生成的时候内置的,并且英文网站一篇在Jenkins上运行docker的文章,也讲到通过定制镜像的方式解决Jenkins权限的问题。

定制过程如下:

1、新建 vi dockerfile文件,添加镜像定义。

内容如下:

#定义使用docker jenkinsci/blueocean:1.22.0为基础镜像

FROM jenkinsci/blueocean:1.22.0

#设置作者信息

MAINTAINER XXXXXX

LABEL Description="This image is used to serve XXXX project"  Version="1.0"

#设置Jenkins默认用户

USER root

2、运行docker build -t myjenkins:1.0 . -f dockerfile生成新的docker镜像。

3、执行docker-compose down -v停止原Jenkins容器。

4、修改docker-compose.yml文件,替换使用的镜像为新生成的镜像。

修改如下:

web:

#替换镜像文件jenkinsci/blueocean:1.22.0为myjenkins:1.0镜像

image: 'myjenkins:1.0'

  privileged: true

  user: root

  restart: always

  container_name: jenkins

  hostname: '10.220.96.202'

  ports:

    - '8090:8080'

    - '50000:50000'

  volumes:

    - '/data/jenkins/data:/var/jenkins_home'

    - '/var/run/docker.sock:/var/run/docker.sock '

5、执行docker-compose up -d创建新Jenkins容器。

你可能感兴趣的:(定制Jenkins镜像彻底解决,容器化部署中的各种权限问题)