docker版jekins使用宿主机docker命令

docker版jekins安装,实现CI/CD,也就是实现在容器里面使用宿主机docker命令,这样方式为:docker outside deocker

说明:FROM jenkinsci/jenkins  这个jenkins基础镜像用的系统是debain系统

必须按照下面过程来,否则报错

说明: 官方jenkins镜像本身自带jdk

环境:

192.168.0.97  centos7.5

1、安装docker

参照:https://www.cnblogs.com/effortsing/p/10013567.html

配置docker加速

参照:https://i.cnblogs.com/EditPosts.aspx?postid=10060610

拉取jenkins官方镜像:
docker pull jenkinsci/jenkins

或者:
下载原始镜像

链接:https://pan.baidu.com/s/14z5BnFAXYoMnDoXbiNgmuQ
提取码:ecsq 导入镜像 docker load < jenkinsci.tar/2、/2、/2查看镜像
[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkinsci/jenkins latest b589aefe29ff 3 months ago 703 MB 2、添加maven 方式一:(做成了,启动容器后可以看到mvn版本,但是版本低,不能选择版本)

cat>/home/jenkins-dockerfile/Dockerfile <<EOF
FROM jenkinsci/jenkins
USER root
RUN apt-get update && apt-get install -y libltdl7.*

RUN apt-git install vim -y
RUN apt-get install maven -y

RUN apt-get install git -y
ARG dockerGid=999
RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
EOF

上面dockerfile所做的事情如下:

安装libltdl7.*库、添加jenkins用户到docker组里面来实现使用宿主机的docker,安装maven工具,安装git工具

注意:如果制作好镜像后拉取代码报错没有git工具的时候, 上面的dockerfile中就应该安装git工具: RUN apt-get install git -y

方式二:(没做成,启动容器后看不到mvn版本,但是看网上都是这样做的)
准备maven安装包 rz apache-maven-3.5.4-bin.tar.gz
mkdir -p /home/jenkins-dockerfile/
mv apache-maven-3.5.4-bin.tar.gz /home/jenkins-dockerfile/

编写dockerfile cat>/home/jenkins-dockerfile/Dockerfile <<EOF
FROM jenkinsci/jenkins
USER root
RUN apt-get update && apt-get install -y libltdl7.*
RUN apt-get install vim* -y
ADD apache-maven-3.5.4-bin.tar.gz /usr/local/
ENV MAVEN_HOME=/usr/local/apache-maven-3.5.4
ENV PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
ARG dockerGid=999
RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
EOF 上面构建完启动容器后没有mvn版本,按照下面构建完启动容器也是没有mvn版本,但是进入容器后加载下环境变量就会出现mvn版本, 各种尝试进行写dockerfile添加mvn,都是不行的,不要再试了,浪费时间,期待官方jenkins镜像带mvn

cat>/home/jenkins-dockerfile/Dockerfile <<EOF
FROM jenkinsci/jenkins
USER root
RUN apt-get update && apt-get install -y libltdl7.*
RUN apt-get install vim* -y


ADD apache-maven-3.5.4-bin.tar.gz /usr/local/


ARG dockerGid=999
RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers


RUN echo "# set jdk、jre" >> /etc/profile
RUN echo "export JAVA_HOME=/docker-java-home/" >> /etc/profile
RUN echo "export JRE_HOME=/docker-java-home/" >> /etc/profile
RUN echo "export CLASSPATH=.:/docker-java-home/jre/lib/rt.jar:/docker-java-home/lib/dt.jar:/docker-java-home/lib/tools.jar" >> /etc/profile
RUN echo "export PATH=$PATH:/docker-java-home/bin" >> /etc/profile
RUN /bin/bash -c "source /etc/profile"
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN source /etc/profile


RUN echo "#set maven environment" >> /etc/profile
RUN echo "export MAVEN_HOME=/usr/local/apache-maven-3.5.4/" >> /etc/profile
RUN echo "export PATH=/usr/local/apache-maven-3.5.4/bin:/docker-java-home/jre/bin:/usr/local/apache-maven-3.5.4/bin:$PATH" >> /etc/profile
RUN /bin/bash -c "source /etc/profile"
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN source /etc/profile
EOF


注意:上面Dockerfile中必须先执行apt-get update && apt-get install -y libltdl7.*,再安装maven,添加环境变量,否则会报如下错误:

debconf: delaying package configuration, since apt-utils is not installed
dpkg: warning: 'ldconfig' not found in PATH or not executable
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable
E: Sub-process /usr/bin/dpkg returned an error code (2)
The command '/bin/sh -c apt-get update && apt-get install -y libltdl7.*' returned a non-zero code: 100 说明: libltdl7.*: 如果没有安装这个库,进入容器内部执行docker命令会报错找不到这个库 dockerGid=999 必须步骤 echo "docker:x:${dockerGid}:jenkins" >> /etc/group 必须步骤 3、构建镜像 docker build -t jenkinsci/jenkins:v1 /home/jenkins-dockerfile/ 查看镜像 [root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkinsci/jenkins v1 7b9560d56c4e 23 seconds ago 720 MB
jenkinsci/jenkins latest b589aefe29ff 3 months ago 703 MB 4、启动容器 docker run -d -p 8085:8080 --name jenkins --restart=always \
-v /opt:/opt \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock jenkinsci/jenkins:v1 说明:
/var/run/docker.sock 的作用就是让 Jenkins 能通过主机的 Docker 守护进程(也就是 Docker Engine)来操作 docker 容器; -v $(which docker):/usr/bin/docker :这个是将外部的docker 挂载到 jenkins 容器内部,以便其能使用 docker 命令; -v /opt/opt 是数据卷的挂载 浏览器访问jenkins http://192.168.0.97:8085 注意:不要使用http://192.168.0.97:8085/jenkins 这样访问输入密码后就会报错,这是个bug 获取密码的指令 docker exec jenkins 'cat /var/jenkins_home/secrets/initialAdminPassword' 进入容器内部测试使用docker命令: [root@bogon ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d7efb64b114 jenkinsci/jenkins:v1 "/sbin/tini -- /us..." 49 seconds ago Up 49 seconds 50000/tcp, 0.0.0.0:8085->8080/tcp jenkins
[root@bogon ~]#
[root@bogon ~]# docker exec -it 5d7efb64b114 sh
# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d7efb64b114 jenkinsci/jenkins:v1 "/sbin/tini -- /us..." About a minute ago Up About a minute 50000/tcp, 0.0.0.0:8085->8080/tcp jenkins
# 5、解决出现:^H^H^H^H 把stty erase ^H 添加到.bash_profile中 vim /etc/profile
stty erase ^H su root source /etc/profile 或者进入容器后直接切换为root即可解决 6、查看jdk版本 docker exec jenkins 'java -version' 7、查看maven版本 docker exec jenkins 'mvn -v' 8、添加git工具 进入jenkins界面的全局工具配置里面选择自动安装git工具 9、配置jenkins全局工具 添加jdk路径(进入容器里查看jdk家目录) 查看家目录参照: https://www.cnblogs.com/effortsing/p/10012211.html 这里通过mvn -v 查看得到的是: /usr/lib/jvm/java-8-openjdk-amd64/ 添加maven路径(进入容器查看mvn家目录) 用 find / -name mvn 查找,查找结果: /usr/share/maven/bin/mvn 家目录就是/usr/share/maven

10、配置jenkins全局工具:添加settings.xml, 如下图所示:

Maven Configuration -> Settings file in filesystem -> File Path  /usr/share/maven/conf/settings.xml



11、安装Pipeline Maven Integration 插件

参照:

https://www.cnblogs.com/fengjian2016/p/9970778.html

https://segmentfault.com/q/1010000012232299

https://huanqiang.wang/2018/03/30/Jenkins-Gitlab-Kubernetes-%E7%9A%84%E8%87%AA%E5%8A%A8%E5%8C%96%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90%E4%B8%8E%E9%83%A8%E7%BD%B2/

linux出现:^H^H^H^H参照:

https://blog.csdn.net/u013907239/article/details/74898123

容器版jenkins安装并且实现使用宿主机docker命令,采用的是docker outside deocker,带jdk、添加maven、git的更多相关文章

  1. 容器版Jenkins连接Kubernetes---------非容器版jenkins是无法安装kubenetes插件的,所以无法连接k8s

    容器版Jenkins连接Kubernetes 特别注意:必须用谷歌浏览器,而且非容器版jenkins是无法安装kubernetes插件的,所以无法连接k8s 一.环境说明 OS系统版本:Ubuntu ...

  2. 【Devops】【docker】【CI/CD】关于jenkins构建成功后一步,执行的shell命令详解+jenkins容器运行宿主机shell命令的实现方法

    1.展示这段shell命令 +详解 #================================================================================= ...

  3. 容器版Jenkins官方镜像 本身自带了 Java

    docker版Jenkins官方镜像 本身自带了 Java

  4. 容器版jenkins使用宿主机的docker命令

    参照里面的第一步里面的dockerfile: https://www.cnblogs.com/effortsing/p/10486960.html

  5. 容器版jenkins使用宿主机的kubectl命令

    参照里面的第4步: https://www.cnblogs.com/effortsing/p/10486960.html

  6. 安装JDK+Eclipse+Maven+Git/Gitee(windows系统和linux系统)

    1. 安装JDK 官网下载 下载java SE 下载 Java SE 7 1.1 windows配置jdk windows配置jdk 1.2 Ubuntu配置jdk Ubuntu 安装 JDK 7 / ...

  7. Jenkins(Docker容器内)使用宿主机的docker命令

    1.Jenkins镜像 Docker容器内的Jenkins使用容器外宿主机的Docker(即DooD,还有另外的情况就是DioD),google一下有几种说法,但是都没试成功(试过一种就是修改宿主机/ ...

  8. 【Devops】【docker】【CI/CD】docker启动的Jenkins容器 - 系统管理 - 全局工具配置 - 自动安装JDK、Maven、Git、Docker

    本篇适用于jenkins是启动的docker容器,自动安装JDK  Maven  Git   Docker等全局工具 ========================================= ...

  9. Docker 安装mysql容器数据卷挂载到宿主机

    环境 Centos:7 Docker: 17.05-ce Mysql: 5.7 1. Mysql外部数据和配置文件路径 msyql配置文件路径:/etc/mysql mysql数据卷路径:/var/l ...

随机推荐

  1. MySQL读写分离项目配置

    一.项目信息 1.拓扑 二.环境规划 1.主机信息 2.软件信息 3.MySQL中间件 三.配置

  2. JS数组去重整理合集

    1.利用splice var arr = [1,2,3,4,5,6,7,8,9,9,8,7,6,5,4,3,2,1]; function repeat(arr){ for(var i = 0;i< ...

  3. img src防缓存

    //加时间戳防缓存 var imgurl = "/pcms/headImg/${sessionScope.accountInfo.accountId}_cut.jpg?time=" ...

  4. Servlet实现注册

    1.Servlet实现注册的思路: 2.工程结构 3.功能实现: (1)html实现对数据的收集: <body bgcolor="aqua"> <center&g ...

  5. 洛谷 P1004 方格取数 题解

    P1004 方格取数 题目描述 设有 \(N \times N\) 的方格图 \((N \le 9)\),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字\(0\).如下图所示(见样例): ...

  6. Transform详解(超详细) Attention is all you need论文

    一.背景 自从Attention机制在提出 之后,加入Attention的Seq2 Seq模型在各个任务上都有了提升,所以现在的seq2seq模型指的都是结合rnn和attention的模型.传统的基 ...

  7. Pytest权威教程14-缓存:使用跨执行状态

    目录 缓存:使用跨执行状态 使用方法 首先只重新运行故障或故障 上次运行中没有测试失败时的行为 新的config.cache对象 检查缓存内容 清除缓存内容 逐步修复失败用例 unittest.Tes ...

  8. 主要排序算法(Python实现)

    1. 冒泡排序 算法描述:1. 比较相邻的两个数,对升序(/降序)而言,若当前数小于(大于)后一个数则交换两者的位置. 2.那么循环长度为L的列表,从第一个元素到倒数第(L-1)元素进行第1步操作,其 ...

  9. Git的使用(4) —— 分支的概念和使用

    1. 概念 在SVN中,分支并不是很便于使用.但是在Git中,分支就变成了特别好用的功能呢,受到大多数使用者的青睐. 分支中有几个概念: (1) 分支:分支就是每一次提交创建的点连接成的线. (2) ...

  10. git提交报错:Updates were rejected because the tip of your current branch is behind

    提交代码push时报错:上网查询了一下解决办法有很多种,1.使用强制push的方法:(上网查询说这种会使远程修改丢失,一般是不可取的,尤其是多人协作开发的时候.) git push -u origin ...