open JDK是不能支持jenkins编译项目的 ,所以先写个JDK卸载、安装记录

## 卸载OpenJDK
rpm -qa | grep java 查找已安装的java
#卸载
rpm -e --nodeps 名称
#查找
rpm -qa | grep gcj
rpm -qa | grep jdk
#卸载
yum -y remove java 

安装sunJDK

下载地址 :http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

#新建一个java目录存放JDK

mkdir /usr/java
curl -O http://jdk.tar.gz 文件地址  下载对应文件
tar zxvf   解压压缩包
m -f    删除压缩包

#修改ENV系统环境配置
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_152
 
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 
export PATH=$PATH:$JAVA_HOME/bin
#重载配置
source /etc/profile
#测试是否成功
java -version

docker 安装jenkins


yum -y install docker
 
service docker start   #启动docker服务

ps -ef|grep docker     #查看docker状态(是否启动)

docker pull jenkins/jenkins  #这里是最新的稳定版本
 
docker images | grep jenkins    #查看jenkin镜像是否下载成功


mkdir /var/jenkins_home       
 
chown 1000 /var/jenkins_home

docker run -d --name xpjenkins -p 9090:8080 -v /var/www/obpm:/var/www/obpm -v /usr/java/jdk1.8.0_211:/usr/java/jdk1.8.0_211 -v /opt/JDK:/opt/JDK -v /var/jenkins_home:/var/jenkins_home jenkins/jenkins  #创建容器并启动

#maven 我使用jenkins默认安装了。在/var/jenkins_home下,不再需要映射 增加jdk 、docker maven 本地仓库映射

 
docker ps | grep jenkins   #查看是否映射成功

docker   ps          #查看容器

cat /var/jenkins_home/secrets/initialAdminPassword  #查看密码

存在的问题

  • 官方的镜像默认不是使用 root 账号,虽然 Jenkins 可以正常启动,但是因为没有权限导致不能向宿主机写文件 (Permission denied)
  • Jenkins 基于 Docker 搭建,虽然 Jenkins 同样可以正常启动,但不能在容器内部随意使用 Docker

问题1.有两种解决办法 1.授权chmod 777 给指定目录(少量还可以,jenkins不推荐)

2.重新打包docker镜像, 使用root用户

FROM jenkins/jenkins
MAINTAINER xpseeyou "xpseeyou@163.com"
ENV REFRESHED_AT 2019-8-11
USER root
#新版是支持docker可以不需要安装
#RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list \
#  && echo "deb http://mirrors.aliyun.com/debian jessie main contrib non-free" > /etc/apt/sources.list \
#  && echo "deb http://mirrors.aliyun.com/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list \
#  && echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list

#安装 docker 依赖库
#RUN apt update && apt install -y libltdl7
docker build -t xpseeyou/jenkins .
#关闭、删除之前启动的jenkins
docker stop myjenkins
docker rm myjenkins
#启动新的打包好的镜像
docker run -d --name xpjenkins -p 9090:8080 -v /var/www/obpm:/var/www/obpm  -v /usr/java/jdk1.8.0_211:/usr/java/jdk1.8.0_211 -v /opt/JDK:/opt/JDK -v /var/jenkins_home:/var/jenkins_home xpseeyou/jenkins

问题2.

将宿主机的 Docker 程序挂载到 Jenkins 容器内部(宿主机环境为 Ubuntu 16.04,其他环境未测试)

docker-compose.yml

version: '2'
services:
  jenkins:
    restart: always
    image: xpseeyou/jenkins:2.137
    container_name: jenkins
    expose:
      - "8080"
      - "50000"
    ports:
      - "8080:8080"
      - "50000:50000"
    environment:
      JAVA_OPTS: "-Djava.awt.headless=true -Duser.timezone=Asia/Shanghai"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      # 将宿主机的 Docker 程序挂载到 Jenkins 容器内部
      - /usr/bin/docker:/usr/bin/docker:ro
      - ../data/jenkins:/var/jenkins_home

存在的问题的解决办法——原文链接