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