CentOS7下使用docker,完成Jenkins镜像、tomcat镜像制作和启动

2023-05-16

最终的目的,是为了完成docker环境的Jenkins搭建使用,并从gitlab上获取代码,打出war包,war包通过目录挂载的方式,在tomcat容器中使用,总体思路如下

一、CentOS7下使用Docker

首先确保已经执行了yum源切换到阿里云,参考上一节内容

1.卸载已经安装的docker

yum list installed | grep docker

yum -y remove docker-engine.x86_64(根据上一步结果卸载)

2.安装Docker

参考:https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.58b01991Cb2eOJ

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# step 1: 安装必要的一些系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# Step 2: 添加软件源信息

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# Step 3: 更新并安装 Docker-CE

sudo yum makecache fast

sudo yum -y install docker-ce

# Step 4: 开启Docker服务

sudo service docker start

docker version

3.镜像搜索

如果直接使用docker pull,默认是从官方镜像走,速度也还行,但是国内也有两家可以使用,阿里云和网易云,如下:

阿里云

https://dev.aliyun.com/search.html

网易云-镜像中心

https://c.163yun.com/hub#/m/home/

官方Dockerhub

https://hub.docker.com/explore/

比如在阿里云上面搜索centos,可以搜索到如下

可以直接执行,pull这个镜像

docker pull registry.cn-hangzhou.aliyuncs.com/centos7-lnmp/centos7-lnmp

启动镜像docker run –it imageid

4.容器修改后提交为镜像(目前很少用到,可忽略)

在宿主机器上执行docker ps,查看正在运行的镜像实例

执行docker commit d5e2 centos7sshd,即可提交一个镜像并命名为centos7sshd,即可将容器内的修改提交为一个新的镜像,可以用此制作其他容器。

5.创建支持SSH服务的CentOS镜像(目前很少用到,可忽略)

l  启动sshd服务

[root@b5926410fe60 /]# yum install passwd openssl openssh-server -y

启动sshd:

# /usr/sbin/sshd -D

这时报以下错误:

[root@ b5926410fe60 /]# /usr/sbin/sshd

Could not load host key: /etc/ssh/ssh_host_rsa_key

Could not load host key: /etc/ssh/ssh_host_ecdsa_key

Could not load host key: /etc/ssh/ssh_host_ed25519_key

执行以下命令解决:

[root@b5926410fe60 /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''

[root@b5926410fe60 /]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''

[root@b5926410fe60 /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''

然后,修改 /etc/ssh/sshd_config 配置信息:

UsePAM yes 改为 UsePAM no

UsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no

[root@b5926410fe60 /]# sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config

[root@b5926410fe60 /]# sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config

修改完后,重新启动sshd

[root@b5926410fe60 /]# /usr/sbin/sshd –D

l  修改root密码,执行passwd修改即可

l  Commit此容器修改(参考上一节内容)

l  启动新的镜像

docker run -it -p 10022:22 80d  /usr/sbin/sshd –D

l  在宿主机器上登陆

ssh root@localhost -p 10022

6.通过Dockerfile创建tomcat7容器(基于ubuntu镜像)

1)通过dockerfile,add war包、jdk方式制作镜像

所需内容,可以从CSDN下载:https://download.csdn.net/download/sdfiiiiii/10693805

使用dockerfile制作镜像。整体思路是:先要准备好apache-tomcat-8.0.53.tar.gz、jdk-8u144-linux-x64.tar.gz、demo.war(用于试验的war包,事先准备好),用网易云的ubuntu14.04镜像为基础,将tomcat、jdk和war包add到镜像中,并最后在容器启动的时候执行run.sh用于启动tomcat。

创建tomcat8-jdk目录,并按下图放好文件。

vim Dockerfile

FROM hub.c.163.com/library/ubuntu:14.04

MAINTAINER liukun <liukun@joinboom.cn>

# now add java and tomcat support in the container

ADD jdk-8u144-linux-x64.tar.gz /usr/local/

ADD apache-tomcat-8.0.53.tar.gz /usr/local/

# configuration of java and tomcat ENV

ENV JAVA_HOME /usr/local/jdk1.8.0_144

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV CATALINA_HOME /usr/local/apache-tomcat-8.0.53

ENV CATALINA_BASE /usr/local/apache-tomcat-8.0.53

ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

# container listener port

EXPOSE 8080

# ADD war into tomcat under webapps directory

ADD demo.war /usr/local/apache-tomcat-8.0.53/webapps

ADD run.sh /usr/local/

ENTRYPOINT ["/usr/local/run.sh"]

run.sh文件内容(此文件需要设置执行权限)

#!/bin/bash

/usr/local/apache-tomcat-8.0.53/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.0.53/logs/catalina.out

2)构建镜像build

docker build -t tomcat8-jdk1.8-ubuntu14.04:1.0.0 .

注意最后有一个“.”

3)启动容器docker run(使用-v挂载主机目录,将tomcat日志输出到宿主机)

将主机上的/usr/local/tomcat/logs目录挂载到容器的/usr/local/apache-tomcat-8.0.53/logs目录(容器中的日志将会写回到宿主机上;--privileged=true要加,否则会报Permission denied,这个参数位置也不能放到最后)

docker run –itd  -p 8080:8080 -v /usr/local/tomcat/logs:/usr/local/apache-tomcat-8.0.53/logs --privileged=true tomcat8-jdk1.8-ubuntu14.04:1.0.0

4)访问tomcat

浏览器访问http://192.168.74.154:8080/demo/sample

5)也可以通过-v挂载目录的方式,将war包目录在docker run的时候映射到容器的webapps目录下,启动容器即可

Dockerfile内容

FROM hub.c.163.com/library/ubuntu:14.04

MAINTAINER liukun <liukun@joinboom.cn>

# now add java and tomcat support in the container

ADD jdk-8u144-linux-x64.tar.gz /usr/local/

ADD apache-tomcat-8.0.53.tar.gz /usr/local/

# configuration of java and tomcat ENV

ENV JAVA_HOME /usr/local/jdk1.8.0_144

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV CATALINA_HOME /usr/local/apache-tomcat-8.0.53

ENV CATALINA_BASE /usr/local/apache-tomcat-8.0.53

ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

# container listener port

EXPOSE 8080

ADD run.sh /usr/local/

ENTRYPOINT ["/usr/local/run.sh"]

run.sh内容:

#!/bin/bash

/usr/local/apache-tomcat-8.0.53/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.0.53/logs/catalina.out

Build镜像:

docker build -t tomcat-war-out:1.0.0 .

启动容器

docker run -it -p 8080:8080 -v /usr/local/tomcat/logs:/usr/local/apache-tomcat-8.0.53/logs -v /home/liukun/tomcat/webapps:/usr/local/apache-tomcat-8.0.53/webapps --privileged=true tomcat-war-out:1.0.0

注意:-p参数不能放在最后,否则启动是ok的,但是不能访问

6)其他常用命令

docker rm -f $(docker ps -a |  grep "tomcat*"  | awk '{print $1}')

批量删除无用的镜像(镜像名包含关键字)

docker rmi --force `docker images | grep doss-api | awk '{print $3}'`    //其中doss-api为关键字

 

7.整合Jenkins进行打包发布流程

整体思路:使用Jenkins容器打包,scp war包到tomcat容器宿主机,挂载war包目录到tomcat容器中,并重启tomcat容器

分解动作:

l  Jenkins是一个docker容器,拉取代码并打war包(step1)

l  war包scp到目标tomcat所在宿主机上,通过脚本scp到目标主机(step2)

l  server.xml预先生成好,做成共享目录,挂载到容器conf目录(step3)

l  war包目录挂载到容器里面(step4)

l  启动/重启容器(step5)

 

8.Jenkins using docker

对应上面的step1:目标:搭建Jenkins的docker环境,并从git上拉取代码并打出war包

需要准备的环境jdk1.8+tomcat8+jenkins2.138.1war包+maven3.5.0

l  所需内容,可以从CSDN下载:https://download.csdn.net/download/sdfiiiiii/10693920

 

l  不直接选用Jenkins镜像,否则安装完成之后,会有一些Jenkins插件找不到;下载2.138.1版本Jenkins的war包,通过tomcat8+jdk1.8+Ubuntu14.04安装

1)准备好的目录结构如下

2)构建镜像build

docker build -t jenkins-tomcat:1.0.0 .

3)启动容器docker run

sudo docker run -it -p 8080:8080 -p 50000:50000 --name jenkins3 --privileged=true-v /home/liukun/jenkins:/var/jenkins_home -v /root/.jenkins:/root/.jenkins jenkins-tomcat:1.0.0

4)访问Jenkins并完成配置

http://192.168.74.154:8080/jenkins2.138.1

l  通过docker exec –it jenkins3 /bin/bash进入到容器中,查看文件/root/.jenkins/secrets/initialAdminPassword内容,来获取admin密码

l  安装完成Jenkins,如果项目是maven+gitlab项目,那么需要安装maven插件和gitlab插件;进行“系统管理->插件管理->可选插件”勾选Maven Integration和gitlab两个插件进行安装

l  Ubuntu软件源加速(用于安装git和maven)

由于默认的软件安装源速度较慢,需要切换到国内源

先执行apt-get install apt-transport-https

然后参考https://www.linuxidc.com/Linux/2017-11/148627.htm进行切换,之后再进行后续操作

l  由于镜像中没有加入git,所以需要通过apt-get install git进行安装

l  Maven通过挂载目录的方式使用

Ø  /home/liukun/jenkins:/var/jenkins_home,将maven包放在宿主机的/home/liukun/jenkins,即可在容器内/var/jenkins_home访问并使用

Ø  Jenkins启动之后需要配置maven所在目录

在“系统管理->全局工具配置”找到MAVEN;里面的目录,是我们通过目录挂载到容器里面的,可以直接使用,maven的settings.xml中,mirror配置到阿里云


l  Jenkins构建项目的时候报错,需要高版本jdk支持

高版本的Jenkins需要至少使用jdk1.8,所以在“系统管理->全局工具配置”找到JDK并按如下配置(jdk已经通过docker run命令挂载到了容器中)

 

重新构建即可

l  Jenkins的项目构建参数如下

 

至此,Jenkins using docker完成,可以通过gitlab打出war包

后续step2、3、4、5,其实均已通过上述内容分步骤有所体现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS7下使用docker,完成Jenkins镜像、tomcat镜像制作和启动 的相关文章

随机推荐

  • Ubuntu18.04 方便好用的截图工具

    安装flameshot 下载地址 xff1a https github com lupoDharkael flameshot 安装命令 xff1a sudo apt get install flameshot 配置快捷键 设置 gt 设备
  • SPARC体系下硬浮点编译故障分析

    问题说明 之前extension版的app工程都是用的软浮点编译的 xff0c 在增加姿控算法库后 xff0c 统一改用硬浮点运行 xff0c 发现之前一个浮点数解析不对了 xff0c 排查发现和工程编译选项有关 xff0c 为软浮点时正常
  • SylixOS下DNS配置

    SylixOS下支持DNS xff08 域名解析 xff09 服务 xff0c 既可以通过域名地址来访问网络地址 测试 先进行一个域名解析的测试 xff1a 由上图可知 xff0c 在其他网络配置正确的情况下 xff0c SylixOS可以
  • SylixOS 教培官网上线

    4月末翼辉创建的包括SylixOS教培在内的文档中心已上线 今天SylixOS教培又上线了 Shell 命令手册 和 IDE 使用手册 方便大家学习和查阅SylixOS相关知识点 SylixOS教培官网 https docs acoinfo
  • SylixOS App 运行时出现“vprocRun() error: can not find entry function.”错误提示原因及解决方法

    针对只使用静态库 xff0c 不使用共享库的业务场景 xff0c 如果libsylixos Output目录下的 libvpmpdm so文件被删除 xff0c SylixOS App程序将自动连接libvpmpdm a文件 xff0c 这
  • 【无标题】

    环境变量 xff08 environment variables xff09 是一组键值对 xff08 key 61 value xff09 列表 xff0c 每一项键值对为一个环境变量 xff0c 分环境变量名和环境变量值 xff0c 两
  • c#爬虫-1688官网自动以图搜图

    背景 在1688有个功能 xff0c 就是上传图片 xff0c 就可以找到类似的商品 如下 网址 xff1a https www 1688 com 这时候 xff0c 我们可以使用程序来代替 xff0c 大批量的完成图片上传功能 实现思路
  • 关于大端序和小段序

    Most Significant Byte 指多字节序列中具有最大权重的 字节 wiki中的解释 xff1a Most Significant Bit 是指一个n位 二进制数字中的n 1位 xff0c 具有最高的权值 与之相反的称之为最低有
  • 使用Project进行项目管理

    文章目录 1 Project可以做哪些 xff1f 1 1 功能清单1 2 本文将会涉及到的内容 2 常见操作2 1 设置 xff1a 自动任务2 2 设置 xff1a 任务的时间格式2 3 日历设置 xff1a 项目开始时间2 4 日历设
  • 进销存小程序(一)项目整体功能和设计

    文章目录 1 设计目标2 功能点说明2 1 首页2 2 登陆2 2 1 微信用户和当前用户绑定的过程2 2 2 获取用户信息 2 3 创建店铺2 4 加入店铺2 5 创建商品2 6 商品信息修改2 7 入库管理2 8 出库管理2 9 库存盘
  • Tomcat的appBase,docBase,path关系

    文章目录 1 结论在最前面2 server xml关于appbase和context配置2 1 war包在webapps目录下 xff1b appbase 61 34 webapps 34 xff1b 无context配置2 2 war包在
  • ubuntu 18.04 LTS 安装搜狗输入法

    首先安装 fcitx xff0c 再安装搜狗输入法 一 检测是否安装fcitx 首先检测是否有 fcitx xff0c 因为搜狗拼音依赖fcitx 在终端中输入 fcitx xff0c 检查 fcitx 是否已有 fcitx 提示 xff1
  • Activiti之一:部署activiti-admin、activiti-app、activiti-rest

    文章目录 各组件版本下载部署将war包放入tomcat 访问 在网上查找activiti相关资料 xff0c 发现对于activiti rest的使用很少 xff0c 而官网对于api的支持还是比较多的 xff0c 如果考虑的是一个纯粹的工
  • 基于mongodb的动态表单实现

    文章目录 1 项目背景2 术语表3 技术选型4 概要设计4 1 逻辑架构图4 2 系统覆盖图 5 详细设计5 1 元数据样例及说明5 2 关于uuid 6 接口清单6 1 表单管理模块6 1 1 从excel导入表单元数据6 1 2 表单元
  • 10.9.1-Dataway+Echarts动态图表方案

    文章目录 1 技术选型2 实现方案2 1 方案介绍2 2 方案实现 xff08 demo xff09 2 2 1 使用echarts绘制html静态页2 2 1 1 选择合适的图表2 2 1 2 下载html demo 2 2 2 使用Da
  • 11.1-股票基金历年收益率计算

    文章目录 1 计算目标2 关键问题3 获取交易日历4 逻辑编写 1 计算目标 我们想知道 xff0c 一只股票标的 xff0c 在之前的几年中 xff0c 每一年的年化收益率是多少 xff1f 如果将每年的年化收益率进行求和汇总 xff0c
  • java代理实现爬取代理IP

    仅仅使用了一个java文件 xff0c 运行main方法即可 xff0c 需要依赖的jar包是com alibaba fastjson xff08 版本1 2 28 xff09 和Jsoup xff08 版本1 10 2 xff09 如果用
  • 使用proguard进行javaweb代码混淆

    背景 xff1a 公司需要将软件打包出售 xff0c 此时需要进行代码混淆和一些加密要求 调研 xff1a 目前此类实现包含软件和硬件实现 xff1b 硬件实现是使用类似加密狗usb工具进行防护 xff0c 应用系统通过与加密狗交互 xff
  • 使用说明-Postman-带cookie请求、文件上传

    Postman进行文件上传 选择post方式 xff0c 地址是http 192 168 102 213 7240 foa system upload Headers部分不要填写任何内容 对照后台的接口 xff0c 配置postman 选择
  • CentOS7下使用docker,完成Jenkins镜像、tomcat镜像制作和启动

    最终的目的 xff0c 是为了完成docker环境的Jenkins搭建使用 xff0c 并从gitlab上获取代码 xff0c 打出war包 xff0c war包通过目录挂载的方式 xff0c 在tomcat容器中使用 xff0c 总体思路