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

news2024/11/17 19:44:30

🎈 作者: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.coloradmin.cn/o/730207.html

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

相关文章

抖音seo源码部署搭建--代码分享

一、 开发环境搭建 抖音SEO源码部署环境搭建可以分为以下几个步骤: 安装必要的软件和工具:需要安装Node.js、NPM、Git等软件和工具,具体安装方法可以参考官方文档。 下载源码:从GitHub或其他源码托管平台下载抖音SEO源码。 安装…

SpringBoot 配置文件:什么时配置文件?配置文件能干什么?

文章目录 🎇前言1.配置文件的格式2. properties配置文件说明2.1 properties基本语法2.2 读取配置文件 3. yml 配置文件说明3.1 yml 基本语法 4.properties与yml 对比 🎇前言 学习一个东西,我们先要知道它有什么用处。整个项目中所有重要的数…

Vscode 绿色系清新主题

炎炎夏日,上班上的心浮气躁,敲代码的时候,只觉昏昏沉沉,浑浑噩噩... 给vscode换一个一个清新美好的绿色主题,充满活力和希望吧。 朋友们,收藏起来,每个季节换一个主题,打工快乐&am…

[工业互联-14]:机器人操作系统与ROS

目录 第1章 简介 第2章 历史 第3章 特点 (1)点对点设计 (2)不依赖编程语言 (3)精简与集成 (4)便于测试 (5)开源 (6)强大的库及…

LVS-DR负载群集的优势和部署实例

目录 一、DR模式数据包流向分析 二、DR模式的特点 三、DR模式中需要解决的问题 四、LVS-DR部署实例 1.配置NFS共享存储器 2.配置节点web服务(两台的配置相同) 3.配置LVS负载调度器 一、DR模式数据包流向分析 1.Client 客户端发送请求到 Director …

OpenCV库实现了一个简单的图像放缩工具

这里是详细的代码解析: #include <opencv2/opencv.hpp> // 引入OpenCV主要库。 #include <opencv2/highgui/highgui.hpp> // 引入高级GUI模块,它包含用于显示图像和获取用户输入的函数。 #include <opencv2/imgproc/imgproc.hpp> // 引入图像处理模块,它…

mysql数据类型char和varchar的区别

&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&…

如何将Windows的文件存储到铁威马NAS里?

总是能听到小伙伴问&#xff0c;有没有办法可以省去登入TOS的操作就可以直接存取铁威马NAS上的文件及资料呢&#xff1f;很简单&#xff0c;其实只要将NAS的共享文件夹映射到Windows的网络驱动器&#xff0c;就饿可以让我们节省登入TOS的操作直接存取TNAS的文件&#xff0c;编辑…

如何打造工程师文化?

目录 一、打造工程师文化的步骤&#xff1a;二、成功案例&#xff1a;三、失败案例及教训&#xff1a; 打造工程师文化是一个复杂而又关键的任务&#xff0c;它需要公司在组织结构、价值观、领导风格以及员工福利等方面做出全面的调整。下面是一个针对打造工程师文化的详细步骤…

[mj_robot_sim]多关节机器人仿真软件介绍

全称&#xff1a;Multi-Joints Robot Simulator 代码地址&#xff1a;https://github.com/Jelatine/mj_robot_sim 设计目的 个人学习opengl的技术落地尝试设计一个跨平台、轻量级的机器人仿真软件&#xff0c;方便调试机器人 特性 轻量级&#xff0c;接口简单易用跨平台&…

管理类联考——逻辑——技巧篇——形式逻辑的三大理论基石

&#x1f3e0;个人主页&#xff1a;fo安方的博客✨ &#x1f482;个人简历&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。&#x1f433; &#x1f495;兴趣爱好&#xff1a;b站天天刷&…

​LeetCode解法汇总445. 两数相加 II

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣 描述&#xff1a; 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每…

[RocketMQ] Broker asyncPutMessage处理消息以及存储的高性能设计措施 (十一)

asyncPutMessage方法真正的用来存储消息。 文章目录 1.asyncPutMessage存储普通消息1.1 checkStoreStatus检查存储状态1.2 checkMessage检查消息 2.CommitLog#asyncPutMessage异步存储消息2.1 处理延迟消息2.2 获取最新mappedFile2.2.1 tryCreateMappedFile创建新的MappedFile2…

使用凌鲨进行数据标注

在AI研发团队中&#xff0c;数据的数量和质量通常比算法本身更重要。为了获得大量高质量的数据&#xff0c;标注软件是必不可少的。目前许多开源标注软件在权限、任务管理和审核方面都存在较大问题。 在凌鲨(linksaas)0.3.8版本中增加了数据标注功能&#xff0c;支持 音频分类…

基于matlab使用车载激光雷达数据在惯性测量单元读数帮助下构建地图(附源码)

一、前言 此示例演示如何处理来自安装在车辆上的传感器的 3-D 激光雷达数据&#xff0c;以便在惯性测量单元 &#xff08;IMU&#xff09; 读数的帮助下逐步构建地图。这样的地图可以促进车辆导航的路径规划&#xff0c;也可以用于定位。为了评估生成的地图&#xff0c;此示例…

国内环境安装Atlas OS步骤与网络问题解决

国内环境安装Atlas OS步骤与网络问题解决 Atlas 是一个开源、透明的项目&#xff0c;它修改了 Windows&#xff0c;并消除了影响游戏性能的所有负面缺点。我们是减少系统延迟、网络延迟、输入延迟和保持系统私密性的绝佳选择&#xff0c;同时仍然关注性能。我不久前在安装时遇…

【论文基本功】【LaTeX】参考文献中常见属性的用法及特点(bib文件)【IEEE论文】

【论文基本功】【LaTeX】参考文献中常见属性的用法及特点&#xff08;bib文件&#xff09;【IEEE论文】 一、author&#xff08;作者&#xff09;1. 使用方法用法1&#xff1a;作者名字的两种写法用法2&#xff1a;使用and连接不同作者姓名用法3&#xff1a;超过3个作者时如何使…

Excel如何在运算中过滤重复数据?

来百度APP畅享高清图片 问题&#xff1a;两个对比表格内的数据实际是有重复的但是不是完全重复&#xff0c;比如a-b 和b-a 只是顺序换了但是条件格式就无法筛选了&#xff0c;只能筛选出a-b a-b 的相同数据。 需求&#xff1a;要筛选出a-b a-b b-a的重复数据&#xff0c;或者把…

3.2.cuda运行API-第一个运行时程序,hello-cuda

目录 前言1. hello-cuda总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习精简 CUDA 教程-第一个运行时程序&#xff0c;hell…

助力打造“先锋城市” 中国数字智能生态大会在深圳举行

随着数字经济的深入发展&#xff0c;以人工智能、大数据、数字孪生等新技术所产生的社会价值日益凸显&#xff0c;以“技术红利”牵引带动“改革红利”&#xff0c;形成广泛共识。 7月5日下午&#xff0c;以供需对接、链接合作为特色的 CDEC2023中国数字智能生态大会深圳站活动…