OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

1.構建os基礎鏡像

1)製作適合自己的os鏡像Dockerfile,注意Dockerfile文件名的首字母"D"必須要大寫,否則構建時無法識別

    [root@k8s centos7.6]# cat Dockerfile
    #基礎鏡像來源,事先在dockerhub下載centos:7.6.1810
    FROM centos:7.6.1810
    #鏡像維護者
    MAINTAINER zhaojiehe
    #配置yum源
    RUN yum install wget -y&&rm -rf /etc/yum.repos.d/* && wget -O /etc/yum.repos.d/epel.repo \
    http://mirrors.aliyun.com/repo/epel-7.repo&&wget -O /etc/yum.repos.d/CentOS7-Base-163.repo \
    http://mirrors.163.com/.help/CentOS7-Base-163.repo
    #安裝必要的包
    RUN yum install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre pcre-devel \
    openssl  openssl-devel zip unzip zlib-devel  net-tools lrzsz tree ntpdate \
    telnet lsof tcpdump wget libevent libevent-devel bc  systemd-devel \
    bash-completion traceroute -y

2)通過Dockerfile構建os基礎鏡像

      [root@k8s centos7.6]# docker build -t k8s.harbor.cn/base_application/centos:7.6-base .                

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

3)查看構建的centos基礎鏡像

      [root@k8s centos7.6]# docker images | grep 7.6-base  

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

2.構建jdk環境鏡像

1)準備好jdk環境壓縮包

    [root@k8s jdk-base]# ll

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

2)準備環境變量配置文件profile,用於替換掉jdk容器中的profile文件

    [root@k8s jdk-base]# cat profile | tail -n3
    export JAVA_HOME=/usr/local/src/jdk
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

3)jdk的Dockerfile製作

    [root@k8s jdk-base]# cat Dockerfile
    #基礎鏡像爲上面製作好的centos鏡像
    FROM k8s.harbor.cn/base_application/centos:7.6-base
    #鏡像維護者
    MAINTAINER zhaojiehe
    #添加jdk壓縮包到容器指定的路徑中,ADD命令會自動解壓壓縮包
    ADD jdk-8u221-linux-x64.tar.gz /usr/local/src
    #創建jdk軟連接以及java程序的軟連接
    RUN ln -sv /usr/local/src/jdk1.8.0_221 /usr/local/src/jdk && ln -sv /usr/local/src/jdk/bin/* /usr/bin/
    #添加本地配置的profile環境變量文件到容器中
    ADD profile /etc/profile
    #聲明環境變量,使java環境生效
    ENV JAVA_HOME /usr/local/src/jdk
    ENV PATH $JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    ENV CLASSPATH $JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

4)開始構建爲jdk鏡像

    [root@k8s jdk-base]# docker build -t k8s.harbor.cn/base_application/jdk:1.8.u221-base .

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

5)查看構建的jdk鏡像

    [root@k8s jdk-base]# docker images | grep jdk

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

3.構建jenkins鏡像

1)以下爲構建jenkins鏡像準備的文件

    [root@k8s jenkins]# ll

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

2)下載好jenkins程序的war包,和事先打包好plugins插件壓縮包避免jenkins啓動下載插件太慢

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

3)默認爲google的更新源,這樣會導致無法連接國外源使得jenkins無法啓動,因此修改hudson的url爲國內清華大學更新源

    [root@k8s jenkins]# cat hudson.model.UpdateCenter.xml
    <?xml version='1.1' encoding='UTF-8'?>
    <sites>
        <site>
            <id>default</id>
            <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.json</url>
        </site>
    </sites>

4)jenkins的啓動腳本,通過java命令指定jenkins的war包、最大最小堆內存、webroot應用目錄、監聽的端口

    [root@k8s jenkins]# cat jenkins_start.sh
    #!/bin/bash
    cd /apps/jenkins && java -server -Xms1024m -Xmx1024m -jar jenkins-2.190.3.war --webroot=/apps/jenkins/war_data --httpPort=8081

5)製作jenkins的Dockerfile鏡像文件

    [root@k8s jenkins]# cat Dockerfile
    #指定jdk的基礎鏡像
    FROM k8s.harbor.cn/base_application/jdk:1.8.u221-base
    #鏡像維護者
    MAINTAINER zhaojiehe
    #本地默認是UTC時區,將時區設置爲國內上海時區
    RUN rm -f /etc/localtime && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    #本地修改好的hudson文件提前放入jenkins容器中
    ADD hudson.model.UpdateCenter.xml /root/.jenkins/
    #jenkins需要的插件打入容器中
    ADD jenkins_plugins.tar.gz /root/.jenkins/
    #jenkins啓動的war添加到容器中,會自動創建/apps/jenkins/此文件目錄,無需手動創建
    ADD jenkins-2.190.3.war /apps/jenkins/
    #jenkins的啓動腳本添入容器
    ADD jenkins_start.sh /usr/bin/
    #將Jenkins的指定8081端口暴露
    expose 8081
    #執行jenkins的守護進程腳本命令
    CMD ["/usr/bin/jenkins_start.sh"]

6)構建jenkins的鏡像

    [root@k8s jenkins]# docker build -t k8s.harbor.cn/base_application/jenkins-base:v1 .

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

7)查看構建的jenkins鏡像

    [root@k8s jenkins]# docker images

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

4.通過鏡像啓動jenkins容器應用

1)命令啓動jenkins容器

    [root@k8s jenkins]# docker run -d -p 8181:8081 k8s.harbor.cn/base_application/jenkins-base:v1

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

2)查看jenkins容器是否爲啓動

    [root@k8s jenkins]# docker ps | grep jenkins

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

3)web端頁面訪問,可見需要容器指定路徑獲取初始化密碼方可繼續

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

4)進入容器找到初始密碼

    [root@k8s jenkins]# docker exec -it fc20749e2450 bash

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

5)jenkins啓動後最重要的兩個目錄,一個爲webroot應用目錄,一個爲jenkins的數據目錄,生產中建議映射到NFS存儲或安全的存儲設備路徑下

    #webroot應用目錄
    [root@fc20749e2450 /]# ll apps/jenkins/war_data/

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建
#Jenkins的數據保存目錄
[root@fc20749e2450 ~]# ll /root/.jenkins/
OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

6)返回web,輸入初始密碼繼續,關閉插件安裝,因事先早已準備好插件

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

7)直接開始使用

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

8)成功進入jenkins的控制檯界面

OS基礎環境、JDK環境、jenkins.war等容器鏡像構建

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章