rpm -ivh http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum install -y docker-io

service docker start

2.部署

1、工程最终打成 Jar包

2、创建Docker镜像

3、创建容器

4、启动容器

3.打包(省略了 大家都会)

4.创建镜像

上一步jar包拷贝到linux服务器先测试jar包是否可以运行:java -jar test-1.0-SNAPSHOT.jar

在test-1.0-SNAPSHOT.jar 位置编写Dockerfile文件

FROM java:8

ENV ARTIFACTID test

ENV ARTIFACTVERSION 1.0-SNAPSHOT

ENV HOME_PATH /home

WORKDIR $HOME_PATH

ADD /

A

R

T

I

F

A

C

T

I

D

ARTIFACTID-

ARTIFACTID−ARTIFACTVERSION.jar

H

O

M

E

P

A

T

H

/

HOME_PATH/

HOMEP​ATH/ARTIFACTID.jar

ENTRYPOINT [“java”, “-jar”, “test.jar”]

在Dockerfile文件所在目录执行:docker build -t test:1.0-SNAPSHOT.jar

镜像创建成功,查询镜像:

[root@localhost xc-govern-center]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

test 1.0-SNAPSHOT ad14dcce6666 35 seconds ago 684 MB

5.创建容器

基于test:1.0-SNAPSHOT镜像创建容器,容器名称为test-demo

docker create --name test-demo -t -p 50101:50101 -e PORT=50101 -e EUREKA_SERVER=http://192.168.101.64:50101/eureka/,http://192.168.101.64:50102/eureka/ test:1.0-SNAPSHOT

创建成功后 可通过docker ps -a命令查看

6.启动容器

docker start test-demo

7.停止与删除

1、停止正在运行的容器

docker stop 容器名

例如:docker stop test-demo

2、删除容器

docker rm 容器名

例如:docker rm test-demo

3、删除镜像

docker rmi 镜像名或镜像Id

例如:docker rmi test:1.0-SNAPSHOT

8.maven构建镜像

a.编写pom_docker.xml

b.将Dockerfile文件拷贝到src/main/resource下

c.删除之前创建的xc-govern-center镜像

d.进入工程根目录(pom_docker.xml所在目录)执行:mvn -f pom_docker.xml clean package -DskipTests docker:build

创建镜像成功,结果如下:

Successfully built 64682c9ba311

[INFO] Built xc-govern-center:1.0-SNAPSHOT

[INFO] Tagging xc-govern-center:1.0-SNAPSHOT with 1.0-SNAPSHOT

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 7.409 s

[INFO] Finished at: 2018-07-19T14:21:16+08:00

[INFO] Final Memory: 52M/414M

[INFO] ------------------------------------------------------------------------

2.3.持续集成

问题描述:

传统的软件开发流程如下:

1、项目经理分配模块给开发人员

2、每个模块的开发人员并行开发,并进行单元测试

3、开发完毕,将代码集成部署到测试服务器,测试人员进行测试。

4、测试人员发现bug,提交bug、开发人员修改bug

5、bug修改完毕再次集成、测试。

问题描述:

1、模块之间依赖关系复杂,在集成时发现大量bug

2、测试人员等待测试时间过长

3、软件交付无法保障

解决上述问题的思考:

1、能否把集成测试时间提前?

2、能否使用自动化工具代替人工集成部署的过程?

持续集成的思想是每天要多次将代码合并到主干,并进行集成、测试,这样就可以提早发现错误,进行修正。持久集成也属于DevOps

优点:

1、自动化集成部署,提高了集成效率。

2、更快的修复问题。

3、更快的进行交付。

4、提高了产品质量。

1.此处测试项目集成流程如下:

2.环境搭建

a.安装Jenkins 官网地址:Jenkins官网

具体安装文档网上都有的 没有私信博主也可以

b.安装GitLab(见上文)

c.pom

此文件相比工程原有pom.xml增加了docker-maven-plugin插件,其作用是构建docker镜像并将镜像推送到Docker私有仓库(192.168.101.64:5000)

2.4.创建持续集成任务

1.Jenkins构建一个任务

2.配置git仓库

a.配置git凭证

此凭证用于远程从git仓库克隆工程源代码

输入git仓库的账号和密码,这里如果使用码云,下边需要配置码云的账号和密码。

b.配置git仓库地址,此地址即构建项目的地址

3.maven构建

1、使用shell脚本停止容器、删除容器、删除镜像

远程登录192.168.101.64(测试服务器)

停止test-center容器

删除test-center容器

删除192.168.101.64:5000/test-center:1.0-SNAPSHOT镜像

shell脚本如下:

#!/bin/bash

result=$(docker ps | grep “192.168.101.64:5000/xc-govern-center”)

if [[ “$result” != “” ]]

then

echo “stop xc-govern-center”

docker stop xc-govern-center

fi

result1=$(docker ps -a | grep “192.168.101.64:5000/xc-govern-center”)

if [[ “$result1” != “” ]]

then

echo “rm xc-govern-center”

docker rm xc-govern-center

fi

result2=$(docker images | grep “192.168.101.64:5000/xc-govern-center”)

if [[ “$result2” != “” ]]

then

echo “192.168.101.64:5000/xc-govern-center:1.0-SNAPSHOT”

docker rmi 192.168.101.64:5000/xc-govern-center:1.0-SNAPSHOT

fi

2、执行maven构建

执行如下maven指令:

clean package -f test-center/pom_docker_registry.xml -DskipTests docker:build

3、拉取镜像,创建容器,启动容器

从docker私有仓库拉取镜像并创建容器,启动容器

显示容器运行日志

docker run --name test -p 50101:50101 -idt 192.168.101.64:5000/test:1.0-SNAPSHOT

docker logs -f test

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

174 道运维工程师面试题128道k8s面试题108道shell脚本面试题200道Linux面试题51道docker面试题35道Jenkis面试题78道MongoDB面试题17道ansible面试题60道dubbo面试题53道kafka面试18道mysql面试题40道nginx面试题77道redis面试题28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

推荐文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。