微服务实例构建成 docker 镜像实例


🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、实验环境

二、制作 jar

二、打包镜像

2.1 编写 DockerFile

2.2 构建 docker 镜像

三、运行镜像

四、远程访问容器


本文主要介绍如何将微服务实例的 jar 构建成 docker 镜像。

一、实验环境

本文的试验环境是 CentOS 7.9,如下所示。

[root@k8s-master ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[root@k8s-master ~]#

二、制作 jar

我创建了一个微服务实例,打包成了 jar,如下所示。

图1 微服务实例

上面的微服务实例可以通过 localhost:8088/index 访问,返回 hello,如下所示。

图2 访问微服务

 在 Linux 环境中创建一个目录 imagesJar,将 demo-0.0.1-SNAPSHOT.jar 拷贝到该目录下,如下所示。

[node@k8s-master imagesJar]$ ls
demo-0.0.1-SNAPSHOT.jar
[node@k8s-master imagesJar]$

二、打包镜像

在微服务实例同一目录下(imagesJar目录下)创建 DockerFile 文件,如下所示。

[node@k8s-master imagesJar]$ ls
demo-0.0.1-SNAPSHOT.jar  DockerFile
[node@k8s-master imagesJar]$

下面编写 DockerFile 文件。 

2.1 编写 DockerFile

编写 DockerFile 文件内容如下所示。

#penjdk:8-jre 为基础镜像,来构建此镜像,可以理解为运行的需要基础环境
FROM openjdk:8-jre#WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行。
WORKDIR /opt/docker/images/metabase/#将当前目录下 demo-0.0.1-SNAPSHOT.jar 复制到容器根目录下
ADD demo-0.0.1-SNAPSHOT.jar demo-0.0.1-SNAPSHOT.jar#将依赖包 复制到容器根目录/libs下,demo-0.0.1-SNAPSHOT.jar 已不再需要添加其它jar包
#ADD libs /libs#暴露容器端口为 8088 Docker镜像告知Docker宿主机应用监听了8088端口
EXPOSE 8088#容器启动时执行的命令
CMD java -jar demo-0.0.1-SNAPSHOT.jar

2.2 构建 docker 镜像

在 imagesJar 目录下执行如下命令。

[node@k8s-master imagesJar]$ sudo docker build -f DockerFile  -t  test/demo:1.2.0 .
Sending build context to Docker daemon  16.5 MB
Step 1/5 : FROM openjdk:8-jre---> 0c14a0e20aa3
Step 2/5 : WORKDIR /opt/docker/images/metabase/---> Using cache---> 971fa909168f
Step 3/5 : ADD demo-0.0.1-SNAPSHOT.jar demo-0.0.1-SNAPSHOT.jar---> Using cache---> e9c435263fb7
Step 4/5 : EXPOSE 8088---> Running in 874466bc2650---> 590b7380444b
Removing intermediate container 874466bc2650
Step 5/5 : CMD java -jar demo-0.0.1-SNAPSHOT.jar---> Running in 2d14cbde1e3d---> fff004fa39a7
Removing intermediate container 2d14cbde1e3d
Successfully built fff004fa39a7
[node@k8s-master imagesJar]$

查看打包好的镜像,执行如下命令。

[node@k8s-master imagesJar]$ sudo docker images
REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
test/demo                                             1.2.0               fff004fa39a7        26 seconds ago      290 MB
test/demo                                             1.0.0               d1d4460e42b1        25 hours ago        290 MB
test/demo                                             1.1.0               d1d4460e42b1        25 hours ago        290 MB
nginx                                                 alpine              4937520ae206        3 weeks ago         41.4 MB
nginx                                                 latest              eb4a57159180        3 weeks ago         187 MB
docker.io/openjdk                                     8-jre               0c14a0e20aa3        11 months ago       274 MB
192.168.231.152:5000/pod-infrastructure               latest              99965fb98423        5 years ago         209 MB
registry.access.redhat.com/rhel7/pod-infrastructure   latest              99965fb98423        5 years ago         209 MB
tianyebj/pod-infrastructure                           latest              34d3450d733b        6 years ago         205 MB
[node@k8s-master imagesJar]$

在上图中,test/demo-1.2.0 是新打得镜像。

三、运行镜像

打包完成镜像后,执行如下命令运行镜像。

[node@k8s-master imagesJar]$ sudo docker run -d -p 8088:8088 test/demo:1.2.0
4dbd849d1d79aa0874ee64f5c220a05b5b65395c94e3e12eb6e38e65121ccf29
[node@k8s-master imagesJar]$

查看运行的镜像,如下所示。

[node@k8s-master imagesJar]$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
4dbd849d1d79        test/demo:1.2.0     "/bin/sh -c 'java ..."   23 seconds ago      Up 21 seconds       0.0.0.0:8088->8088/tcp   zen_dijkstra
[node@k8s-master imagesJar]$

四、远程访问容器

通过浏览器访问容器,如下所示。

图3 通过浏览器访问容器

参考链接:

https://blog.csdn.net/Jarbein/article/details/103627413


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用WiFi测量仪进行机器人定位的粒子过滤器研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

PLSQL Developer怎样查看当前活动会话

点‘工具’-‘会话’: 选择‘Active sessions’: 点击某个会话,可以看到其对应的sql:

Flutter系列文章-Flutter环境搭建和Dart基础

Flutter是Google推出的一个开源的、高性能的移动应用开发框架,可以用一套代码库开发Android和iOS应用。Dart则是Flutter所使用的编程语言。让我们来看看如何搭建Flutter开发环境,并了解Dart语言的基础知识。 一、Flutter环境搭建 1. 安装Flutter SDK …

设计模式之模板模式

1. 模板模式介绍 1、模板模式即模板方法模式自定义了一个操作中的算法骨架,而将步骤延迟到子类中,使得子类可以不改变一个算法的结构,可以自定义该算法的某些特定步骤; 2、父类中提取了公共的部分代码,便于代码复用&am…

【ShenYu系列】ShenYu网关条件匹配的设计及原理分析

ShenYu网关中用到了很多有趣的设计,我对其中的条件匹配的实现尤其感兴趣,所以研究一下具体实现的原理。我这边用到的shenyu版本是2.6.0-SNAPSHOT。 应用入口 原理拆解 AbstractShenyuPlugin#execute,获取到SelectorData集合,进行…

MySQL基础篇第3章(基本的SELECT语句)

文章目录 1、SQL概述1.1 SQL背景知识1.2 SQL分类 2、SQL语言的规则与规范2.1 基本规则2.2 SQL大小写规范 (建议遵守)2.3 注释2.4 命名规则2.5 数据导入指令 3、基本的SELECT语句3.0 SELECT...3.1 SELECT...FROM3.2 列的别名3.3 去除重复行3.4 空置参与运…

OpenCV 入门教程: Sobel算子和Scharr算子

OpenCV 入门教程: Sobel 算子和 Scharr 算子 导语一、Sobel 算子二、Scharr 算子三、示例应用3.1 图像边缘检测3.2 边缘增强 总结 导语 在图像处理和计算机视觉领域,边缘检测是一项重要的任务。 Sobel 算子和 Scharr 算子是两种常用的边缘检测算子&…

MOVEit再现新漏洞,多个版本受影响

今年6月,文件共享工具MOVEit Transfer曾曝出SQL 注入漏洞,能让远程攻击者访问其数据库并执行任意代码。最近,MOVEit Transfer 母公司Progress Software又披露了三个新漏洞。 这三个漏洞分别是 CVE-2023-36932、CVE-2023-36933 和 CVE-2023-36…

window安装MongoDB

安装直接先去官网下载 Download MongoDB Community Server | MongoDB 安装后如下,我们直接双击运行, 这里记得选下面(可以自己选择安装盘符位置),上面第一个会自动帮你安装到C盘,然后选择下一步 ,这里勾选就会选择去自…

win10电脑出现网络问题时,如何解决?

我们的Windows可能会出现各种网络连接问题: 尝试连接Wi-Fi网络时出现错误:Windows无法连接到此网络;可以通过Wifi访问互联网,但通过电缆访问以太网却无法正常工作;尝试通过电缆连接互联网时出现错误: Wind…

NXP i.MX 6ULL工业开发板硬件说明书( ARM Cortex-A7,主频792MHz)

前 言 本文档主要介绍TLIMX6U-EVM评估板硬件接口资源以及设计注意事项等内容。 创龙科技TLIMX6U-EVM是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理器设计的评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳…

基于Springboot+vue的垃圾分类网站设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

Linux下软件安装的命令

源码安装 以源代码安装软件,每次都需要配置操作系统、配置编译参数、实际编译,最后还要依据个人喜好的方式来安装软件。这个过程很麻烦很累人。 RPM安装软件的默认路径: 注意: /etc 配置文件放置目录/usr/bin 一些可执行文件/usr/lib 一些程…

星辰秘典:探索Python项目的神秘力量——贪吃蛇

✨博主:命运之光 🌸专栏:星辰秘典:探索Python项目的神秘力量 🐳专栏:web开发(html css js) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主…

基于SpringBoot+Hadoop+Vue的企业网盘系统

完整资料进入【数字空间】查看——baidu搜索"writebug" 1.1.1 选题的背景 随着信息网络技术的迅猛发展,云计算技术从它的概念提出已经开始在实际生产环境中使用了。大部分的东西都已经慢慢云端化,这种新型的技术也受到许多互联网人员的关注&a…

ARM CORETEX M0简介

ARM CORETEX M0简介 1. M0处理器简单框图 处理器内核:逻辑控制与运算 内部总线系统:单总线将处理器与外部的存储器和外部连接,进行数据交互(冯诺依曼架构,数据与指令一起) NVIC:嵌套向量中断控…

RabbitMQ部署

文章目录 RabbitMQ部署指南1.单机部署1.1.下载镜像1.2.安装MQ RabbitMQ部署指南 RabbitMQ是基于Erlang语言开发的开源消息通信中间件,官网地址:https://www.rabbitmq.com Erlang语言: 面向并发的编程语言,天生为了分布式系统而设计的 1.单机…

JavaScript--改变 HTML 的值

要改变 HTML 元素的值,可以使用以下方法: 1.使用元素节点的 innerText 属性来改变元素的文本内容。 例如:element.innerText 新的文本内容; 2.使用元素节点的 innerHTML 属性来改变元素的 HTML 内容。 例如:element.innerHTML …

java通过url获取视频时长(无需下载文件)

1、导入架包 <!-- jave 核心依赖 --><dependency><groupId>ws.schild</groupId><artifactId>jave-core</artifactId><version>2.4.6</version></dependency><!-- 根据不同操作系统引入不同FFmpeg包 --><!-- wi…

性能测试工具 jmeter 录制脚本,传递 cookie,循环执行接口

目录 前言&#xff1a; 代理录制脚本 循环重复添加接口 登录并传递 cookie 给新建产品接口 循环执行脚本 前言&#xff1a; 在使用JMeter进行性能测试时&#xff0c;录制脚本是一种常用的方法。录制脚本可以帮助你捕获和重放用户与应用程序之间的交互&#xff0c;以模拟真…